Lumpy Space Princess - Adventure Time

JAVASCRIPT

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

jongyung 2023. 3. 10. 10:38

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

- 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

while 함수를 이용한 식입니다.

초기값으로 num의 값을 0으로 정해줬습니다.

범위는 5보다 작거나 같은 수로 정했습니다.

num++; 의 의미는 1씩 증가시켜준다는 의미인데, 위치가 중요합니다.

console.log(num); 의 위에 위치했기 때문에 num에 0부터 5까지 넣은 값이 출력됩니다.

 

만약에 console.log(num); 의 아래에 num++;이 위치했다면,

num에 1을 증가시키기 전의 값인 0부터 출력이 되고,

5까지 넣었을 때 1이 더이상 증가되지 않은 값이 출력됩니다.

 

그러니까, num++; 의 우선 순위가 우선이냐 나중이냐에 따라서 증가가 되느냐 아니냐의 차이입니다.

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

for in문을 이용한 식입니다.

a와 b는 키, 100과 200을 값이라고 합니다.

첫 번 째 명령어 console.log(key);는 키를 출력하고, 두 번 째 명령어 console.log(obj[key]);는 값을 출력합니다.

 

여기에서 출력하는 순서를 잘 봐야합니다.

첫 번 째로 키 a가 출력이 되고, 그 다음 명령어로 인해 a의 값인 100이 출력됩니다.

이렇게 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일 경우에 출력이 되는 식입니다.

 

문제 2번처럼 num++;의 위치가 중요합니다.

명령어 console의 위에 있으므로, 1의 값을 넣어줄 범위를 유의해서 풀어야 합니다.

 

num의 값이 0으로 주어졌습니다. 

if 조건식이 걸려있습니다.

우선 num이 3일 경우에 continue 한다는 식은 3의 값을 출력하지 않습니다.

따라서 if(num == 3){continue;} 까지의 값은 1 2 입니다.

 

다음 식은 num이 6보다 클 경우에 break 한다는 식입니다.

6보다 클 경우부터 출력을 하지 않는다는 뜻이므로, num의 값이 6까지 출력이 됩니다.

 

두 식이 실행되면서 3을 제외한 1부터 6까지의 값이 출력되는 것입니다.

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

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

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

답 : 1 2 3

i의 값이 3이 되면 출력을 멈추는 식입니다.

그렇기 때문에 3까지 출력되는 것입니다.

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

{
    let num = 0;

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

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

답 : 1

2번과 6번의 문제처럼 num++;의 위치가 명령어 console의 위에 있기 때문에

num이 1이면 출력을 멈추는 식이 작용되어 답은 1이 되는 것입니다.

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

{
    let num = 100;

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

답 : 100

switch문을 이용한 식입니다.

num의 값이 100으로 주어졌습니다. 

값이 100일 경우에 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

gallery의 값이 2로 정해져 있습니다. 

 

if문에는 num이 2이면 direct(1의 값)에 1을 더하고,

num이 1이면 1을 빼서 출력한다는 조건이 걸려있습니다.

 

값이 2와 같으므로, direct에 1을 더한 값이 출력되는 것입니다.

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

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 2 3 4

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

답 : 4