Javascript/시험 오답

03월 10일 쪽지시험_오답노트

아라라_ 2023. 3. 11. 02:42

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

Frederick Philips Brooks
Mythical Man-Month 저자
728x90

이번 시험은 헷갈리는 것도 많고 어이없이 틀린 것도 많아 구분짓겠습니다.

틀린 문제의 답 

헷갈린 문제의 답

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

{
    if( null ){
        console.log("true");
    } else {
        console.log("false");
    }
}

답 : false

 

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

{
    let num = 0;
    while( num <= 5 ){
        num++;
        console.log(num);  
    }
}

답 : 1, 2 , 3 , 4 , 5 , 6

해설 : 

변수 num을 선언하여 while문에 조건문에 넣습니다. 조건문을 확인해 보면 num이 5보다 작거나 같으면 반복문이 실행이 됩니다.

먼저 num++이 실행이되고 출력문이 실행이 되는데 이때 num++의 위치가 어디냐에 따라 값이 달라집니다.

그러므로 num은 처음에는 0으로 받았지만 출력전에 증감연산자인 num++가 먼저 적용이 되어서 적용된 값이 출력이 됩니다. 그러므로 첫번째로 1이 출력이 됩니다. 그후로 증감연산자가 실행이되고 출력이 되므로 마지막은 6이 출력됩니다.

 

 

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

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

    str.forEach(function(i){
        console.log(i);
    });
}

답 : 100, 200, 300, 400, 500

 

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

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

    for(let i of str){
        console.log(i);
    }
}

답 : 100, 200, 300, 400, 500

 

 

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

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

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

답 : a, 100, b, 200

 

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

{
    let num = 0;

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

답 : 1 , 2 , 4 , 5 , 6

해설 : while문의  조건식에 true를 넣으면 항상 참이 되어 무한 루프가 발생됩니다.그러므로 위 구문은 무한 루프가 발생하는 구문입니다.num++먼저 출력되고 나면 if문이 실행됩니다.반복하다보면 num이 3이되는데 그렇게되면 첫번째 if문의 조건문이 참이되어 continue문이 실행됩니다.continue문은 실행되면 스킵이 되는 특성이 있습니다. 그럼 3은 스킵이 되어 출력이 되지 않습니다.그 후 다시 반복문이 실행되어 4가 출력됩니다. 그 후 6을 지나 7이 되면 두번째 if문의 조건문과 비교하게 되고참이되면 break문이 실행되어 코드가 멈추게 됩니다.beak문은 반목문을 멈추게 하는 특성이 있어 코드가 멈추게 된것으로 출력된 값을 모으면1,2,4,5,6 가 답이 됩니다.

 

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

{
    for(let i=1; i<=5; i++){
        console.log(i);

        if(i == 3){
            break;
        }
    }
}

답 : 1 , 2 , 3

 

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

{
    let num = 0;

    while (num < 20){
        num++;
        console.log(num);

        if(num == 1){
            break;
        }
    }
}

답 : 1

 

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

{
    let num = 100;

    switch(num){
        case 100 : 
            console.log("100");
            break;
        case 200 : 
            console.log("200");
            break;
        default :
            console.log("300");
    }
}

답 : 100

 

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

{
    func = () => {
        const str = "함수가 실행되었습니다.";
        return str;
    }

    console.log(func());
}

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

 

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

{
    let direct = 1;

    function gallery(num){
        if(num){
            if(num == 2) direct++;
        } else {
            if(num == 1) direct--;
        }
    }
    gallery(2);

    console.log(direct);
}

답 : 2

해설 : 

우선 direct라는 변수에 1이 저장되어 시작이 됩니다.

gellery라는 함수가 선언이 되었고 그안에 매개 변수 num넣어 안에 있는 if문의 조건문의 참과 거짓을 판별하여 if문을 실행 시킵니다.

밑에 있는 함수 실행문에 2라는 숫자가 가 매개변수 num에 들어 갑니다.

 

 

 

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

{
    let sum = 0;
    for(var i=1; i<=100; i++) {
        sum += i;
    };
    console.log(sum);
}

답 : 5050

 

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

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

    document.write(name1);
    document.write(name2);
    document.write(name3);

    //100
    //200
    //javascript
}

답 : name1, name2, name3

 

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

{
    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

해설 : 

우선 객체에  a : 100,b : 200,c : javascript를 넣어 선언하였습니다.

그후 출력문에 키값으로 출력하고 결괏값을 보았을때

변수에 객체의 속성들이 할당된 것을 보아 빈칸에는 obj가 들어가는 것이 맞습니다.

 

위와 같이 선언된 객체의 속성들을 추출하여 여러개의 변수에 할당하는 것인 객체 디스트럭처링방법을 사용하였습니다.

 

 

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

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

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

답 : 100, 200, javascript, jquery

 

 

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

{
    const char = ["J","A","V","A","S","C","R","I","P","T"];

    for(let i=9; i>=0; i--){
        console.log(char[i]);
    }
}

답 : T, P, I, R, C, S, A, V, A, J

 

 

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

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

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

답 : 8, 2, 3, 4

 

 

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

{
    let i = 1;

    while(i > 5){
        console.log(i);
        i++;
    }
    console.log(i);
}

문제 오류 하지만 답은 있습니다. 1이 출력되네요!

해설 :

지금 현재의 문제에서의 답은 while문을 반복할 수 없어 바로 출력되므로 1이지만

만약 while의 조건문의 비교 연산자가 반대로 바뀐다면 답은 1,2,3,4,5입니다.

 

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

{
    let num = [32, 93, 15, 86, 50];
    let sum = 0;

    for(let i=0; i > num.length; i++){
        sum = sum * i;
    }

    console.log(sum)
}

답 : 0

지금 현재 답도 0 입니다 for문의 조건식을 충족하지 못해 바로 출력되어 0입니다

하지만 이번 문제도 선생님의 의도와 다르게 비교 연산자가 잘못된 문제로 비교연산자를 반대로 한다면

답은 똑같이 0입니다.

 

 

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

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

    console.log(result)
}

답 : 4

현재 지금 선언된 변 a와 b에 각각 7과 4를 할당합니다.

그리고 result를 확인해보면 &(and연산자 : 두 수를 2진법으로 변경하여 비교했을때 두 수가 모두 똑같이 1이여야 1이 출력됩니다.)을 사용하여 값을 내는 것입니다. 

4 와 7을 2진법으로 변경하면 4는 100, 7은 111입니다 둘이 비교해서 둘다 1이여야 1이 출력되는 특징을 보면

답은 100으로 답은 4입니다.