Lumpy Space Princess - Adventure Time

JAVASCRIPT

3월 17일 자바스크립트 테스트 오답

jongyung 2023. 3. 17. 10:36

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

모든 문제를 적고 틀린 문제만 오답 정리를 했습니다.

01. 결괏값을 작성하시오.

{
    (function(){
        console.log("함수가 실행되었습니다.");
    })();
}

답: 함수가 실행되었습니다.

02. 결괏값을 작성하시오.

{
    function func(str = "함수가 실행되었습니다."){
        document.write(str);
    }
    func();
}

답: 함수가 실행되었습니다.

03. 결괏값을 작성하시오.

{
    let sum = 0;
    for(var i=1; i<=10; i+=2) {
        sum += i;
    };
    document.write(sum);
}

답: 25

sum은 i를 더한 값이고, 0부터 시작합니다.

i는 1부터 10까지의 범위 안에 있는 수인데, 2씩 증가합니다.

그렇기 때문에 값을 1부터 전부 더해줘야 합니다.

그리고 1부터 2씩 증가한 값인 (1+2+2+2+2)가 9 즉, 10 보다 작거나 같은 마지막 값입니다.

 

풀어서 써보면, 

1 + (1+2) + (1+2+2) + (1+2+2+2) + (1+2+2+2+2) 가 결과값이 됩니다.

04. 다음의 결괏값을 보고 빈칸을 작성하시오.

{
    const obj = {
        a: 100,
        b: 200,
        c: "javascript"
    }
    const { a, b, c } = _______;

    document.write(a);
    document.write(b);
    document.write(c);

    //100
    //200
    //javascript
}

답: obj

05. 다음의 결괏값을 보고 빈칸을 작성하시오.

{
    const objA = {
        a: 100,
        b: 200
    }
    const objB = {
        c: "javascript",
        d: "jquery"
    }
    const spread = {______, ______}

    document.write(spread.a);
    document.write(spread.b);
    document.write(spread.c);
    document.write(spread.d);

    //100
    //200
    //javascript
    //jquery
}

답: ...objA ...objB

06. 다음의 결괏값이 나오도록 보기에서 빈칸에 해당되는 것을 모두 고르시오.

{
    if( _____ ){
        document.write("조건문이 실행되었습니다.(true)");
    } else {
        document.write("조건문이 실행되었습니다.(false)");
    }

    //document.write("조건문이 실행되었습니다.(false)");
    //보기
    //true, false, 1, "1", "", 0, null, undefined, [], {}
}

답: null, 0, "", undefined, false

07. 다음의 if문은 삼항 연산자로 변경하시오.

{
    if( num == 100 ){
        document.write("true");
    } else {
    	document.write("false");
    }
}

답: (num == 100) ? document.write("true") : document.write("false");

삼항 연산자를 외웠으면 쉬웠을 문제입니다.

잘 외워서 다음에는 잊지 않도록 해야겠습니다.

08. 다음의 결괏값을 작성하시오!

{
    for(var i=1; i<=1; i++){
        document.write(i);
        for(var j=1; j<=5; j++){
            document.write(j);
        }
    }
}

답: 1 1 2 3 4 5

09. 다음의 결괏값을 보고 빈칸을 작성하시오!

{
    const num = [100, 200, 300, 400, 500];

    for(let i=0; i<num.length; i++){
        document.write(_______);
    }

    //100 200 300 400 500
}

답: num[i]

[i]를 쓰지 않아서 틀린 문제입니다.

잘 외워서 다음에는 잊지 않도록 해야겠습니다.

10. 다음의 결괏값을 보고 빈칸을 작성하시오!

{
    const num = [100, 200, 300, 400, 500];

    num.forEach(function(el){
        document.write(________);
    });

    //100 200 300 400 500
}

답: el

11. 다음을 보고 리턴값을 생략하여 한줄로 표현하시오!

{
    const func = str => {
        return str;
    }
}

답: const func = str => str;

12. 다음의 결괏값을 보고 빈 칸을 채우시오.

{
    const num = [100, 200, 300, 400, 500];

    for(let index of _____ ){
        document.write(index);
    }

    //결과값
    //100 200 300 400 500
}

답: num

13. 다음의 결괏값을 보고 빈 칸을 채우시오.

{
    function func(){
        let i = 5, j = 4, k = 1, l, m;
        l = i > 5 || j != 0;
        m = j <= 4 && k < 1;
        document.write(l);
        document.write(m);
    }
    func();
}

답: true false

논리 연산자 문제입니다.

논리 연산자에서 AND(&&) 연산자, OR(||) 연산자 그리고 NOT(!) 연산자를 쓴 식입니다.

&&연산자는 비교하는 값 둘 다 true일 때 true가 되고,

||연산자는 비교하는 값 중 하나만 true여도 true가 되고,

!연산자는 값이 true이면 false로 바꿔주고, 반대로 false이면 true로 바꿔줍니다.

 

식에 적용해보면,

l = 5>5 OR j NOT= 0;

m = 4<=4 AND 1<1; 이 됩니다.

 

l은 false OR true 이어서 값은 true,

m은 true AND false 이어서 값은 false 입니다.

14. 다음의 결괏값을 작성하시오.

{
    const arr = [100, 200, 300, 400, 500];
    const text = arr.push(600);

    document.write(arr);

    const arr2 = [100, 200, 300, 400, 500];
    const text2 = arr2.unshift(600);

    document.write(arr2);
}

답: 100 200 300 400 500 600
       600 100 200 300 400 500

push() : 배열의 맨 끝에 값을 추가하고, unshift() : 배열의 맨 앞에 값을 추가합니다.

15. 다음의 결괏값을 작성하시오.

{
    const obj = {
        a: 100, 
        b: 200
    };

    for(let key in obj) { 
        console.log(key);
    }
}

답: a b

16. 다음의 결괏값을 작성하시오.

{
    let num = 0;

    while(false){
        num++;
        if( num == 3 ){
            continue;
        }
        if( num > 6 ){
            break;
        }
    }
    console.log(num);
}

답: 0

while 문입니다.

while문은 조건문이 참일 때 실행되는 반복문입니다.
조건은 문장 안이 실행되기 전에 참, 거짓을 판단합니다.

조건문이 false이기 때문에 식은 실행이 되지 않고, 초기값인 0이 출력됩니다.

17. 다음의 결괏값을 작성하시오.

{
    let a, b, result;
    a = 7, b = 4
    result = a & b;

    console.log(result, a, b)
}

답: 4 7 4

18. 다음의 결괏값을 작성하시오.

{
    let a = 1, b = 2, c = 3, result;
    result = ++a + b++ + ++c;

    console.log(result);
    console.log(a);
    console.log(b+c);
    console.log(c);
}

답: 8 2 7 4

전치, 후치 문제입니다.

++는 1씩 증가, --는 1씩 감소한다는 뜻입니다.

 

후치는 전치에 비해서 우선 순위가 떨어지기 때문에

result = 2(1 + 1) + 2 + 4(3 + 1) = 8 이고,

a = 1 + 1 = 2,

b+c = 3(2 + 1) + 4(3 + 1) = 7,

c = 3 + 1 = 4입니다.

19. 다음의 결괏값을 작성하시오.

{
    let data = [70, 80, 75, 60, 90];
    let best = 0;
    let score = 0;

    for(let i=0; i<data.length; i++){
        if(data[i]>80) {
            best++;
        }
        if(score < data[i]) {
            score = data[i];
        }
    }

    console.log(best, score)
}

답: 1 90

best 와 score 값을 출력하는 식입니다.

 

best는 data 배열 [70, 80, 75, 60, 90] 의 값이 80보다 크면 0에 1씩 증가시킨 값이고,

score는 초기값이 0이며, data 배열 [70, 80, 75, 60, 90] 의 값보다 작을 경우에 그 값을 출력시킨 값입니다.

 

80보다 큰 수는 90 한 개 밖에 없어서, best는 0에 1을 더한 값인, 1입니다.

data 배열 안의 수는 모두 0보다 크기 때문에 모든 수가 될 수 있지만,

이전에 걸려있는 if문에서 data[i]>80의 조건이 있기 때문에 그 값들 중에서 80보다 큰 수인 가장 큰 수가 마지막으로 출력됩니다.

20. 다음의 결괏값을 작성하시오.

{
    function func(num1, num2){
        if(num1 > num2) return num1
        else return num2
    }
    console.log(func(10, 23) + func(40, 50))
}

답: 73