My Melody Kawaii

JAVASCRIPT/문제풀이

자바스크립트 오답노트

younajeong 2023. 3. 10. 12:25

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

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

오답 노트 

 

자바스크립트 20문제 중 틀린 문제 오답노트를 작성했습니다.

 

01. 결과값을 작성하세요

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

정답 노트

false (0,null,undefined,false)는 flase의 값이 나옵니다.

 

 

02. 결과값을 작성하세요

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

오답 노트

실행문 안쪽에 num++가 있어서 num의 값이 0에서 1로 ++ 된 후에 실행문으로 실행됩니다.

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

 

 

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]);
    }
}

오답 노트 

key라는 값을 넣어주면 객체의 값이 아닌 키를 불러옵니다. obj[key]는 key안의 배열값을 불러오는데 반복문 for문의 반복되어서 나오기 기 떄문에 먼저 key의 값 a obj.[key]의 값 100 다음은 b 200으로 불러오게 됩니다.

 

정답 : a 100, b 200

 

 

06. 결과값을 작성하세요

{
    let num = 0;

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

오답 노트 

while은 반복문 입니다. 반복문이 ture일 때 실행이 됩니다. num ++ 로 num이 1이 되면 조건문에 만족하지 않아서 1이 출력되고 다시 반복문으로 돌아가서 num++로 num의 값이 2가 되는데 조건문에 만족하는 조건이 아니므로 그대로 2가 출력됩니다. 다시 반복문으로 돌아가서 num++로 3이 되면 조건문 num==3에 continue라는 조건에 걸려서 continue는 지정된 숫자를 건너뛰기 때문에 3은 출력이 되지 않습니다 그렇게 4,5반복하고 6일때 break에 걸려서 break문은 지정된  숫자 까지 나올 수 있기 때문에 1,2,4,5,6이라는 결과 값이 나오게 됩니다.

 

정답: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;
        }
    }
}

오답 노트 

while반복문으로 num은 0이 출력되는데 20보다 작으므로 실행이 됩니다. num++로 1이 추가되어서 num의 값은 1이 됩니다. 그리고 조건문에 1은 num과 같다면 break가 걸리기 때문에 1이 출력됩니다.

 

정답:1

 

 

09. 결과값을 작성하세요

{
    let num = 100;

    switch(num){
        case 100 : 
            console.log("100");
            break;
        case 200 : 
            console.log("200");
            break;
        default :
            console.log("300");
    }
}
10. 결괏값을 작성하시오.

정답 노트

"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

 

12. 결과값을 작성하세요

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

오답 노트 

1부터 100까지의 합을 구하는 실행문 입니다.

 

정답: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
}

오답 노트 

객체 구조 분해 할당의 문제로 객체의 속성을 가져와서 변수안에 넣어 실행시키는 방법입니다. 따라서 실행문에 name이라는 변수가 들어 가 있으므로 a: name1, b: name2 , c:name3가 됩니다.

 

정답: 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

 

 

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]);
    }
}

오답 노트 

for문을 잉요해서 char의 [i]값을 구하는 문제 입니다. 하지만 for문안에 i--이므로 ++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);
}

정답 노트

while은 반복문입니다 i의 값이 1로 출력되고 i++로 다시 2로 의 값이 들어가서 i는 2로 나오고 i++로 들어가서 i는 3으로 나오고 또 i++로 4로 들어가서 i는 4로 출력되고 i++값으로 5가 나오게 됩니다. 그런데 i는 5보다 작아서 5는 while문 안에서는 실행되지 못하는데 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

 

 

20.결과값을 작성하세요

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

    console.log(result)
}

정답 노트

비트 연산자 입니다. 비트 연산자가 &일때는 1의 값이 같을 때 1이 나옵니다. 따라서 a에서 7을 2진항으로 바꿔주면 0000 0111이 나옵니다. b에서 4를 2진항으로 바꿔주면 0000 0100이 나옵니다 

0000 0111

0000 0100

-----------

0000 0100

이 나오게 됩니다. 그리고 제곱을 이용해서 2의 0승부터 시작해서 2의 1승 2의 2승으로 차례대로 적히는데 2의 2승에 1의 값이 있으므로

2*2는 4라는 정답이 나오게 됩니다.

 

정답:4