공부/오답노트

2023. 03. 10 / 자바스크립트 테스트 & 오답노트 2

우당당쿵당콩탕 2023. 3. 10. 22:43
728x90
반응형

자바스크립트 기초 테스트 2

더보기에 해답과 풀이가 있습니다. 답 전체보기는 맨 하단에 있습니다.
 
01.결괏값을 작성하시오.

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

답 : false

💪 풀이

null이 조건식에 들어갈 경우 false입니다.

 

+

⭐조건식에 들어가는 것에 따른 결과값
false : 0, null, undefined, flase, ""(빈문자열) 
true : 1, 2, "0", "1", "ABC", [](배열), {}(객체), true 

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

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

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

💪 풀이

조건이 true일 때 반복하는 while문에 대한 문제입니다.

 

1) num이라는 변수가 정해져 있고 값이 0입니다.

2) while문을 실행합니다. 루프 조건이 num이 5보다 작거나 같을 때입니다.

3) num++은 num의 1 증가를 의미합니다.

4) 여기서 출력되는 값에 주의해야합니다.

num값이 0일 때 0이 출력되는 것이 아니라 num++이 있기 때문에 1로 출력됩니다.

즉 num의 값이 0이면 1, 1이면 2, 2이면 3, 3이면 4, 4이면 5, 5이면 6으로 값이 출력됩니다.

5) 조건이 5보다 작거나 같을 때이므로 6으로 넘어가지 않고 5까지만 실행됩니다.

 

* while루프가 6번 반복되며 num의 값은 1부터 6까지 증가합니다. *


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

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

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

답 : 100, 200, 300, 400, 500

💪 풀이

매개변수와 forEach로 배열 'str'의 요소를 출력하는 예제입니다.

⭐forEach는 배열이 있어야만 실행이 가능합니다.

 

1) forEach앞의 배열 str넣음으로써 배열 str의 각 요소를 출력하는 함수를 전달합니다.

2) 이 함수는 각 요소를 'i'라는 매개변수로 받아 실행하는 형식입니다. 

 

* 전달하는 형식으로 생각한다면 쉽습니다. *


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

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

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

답 : 100, 200, 300, 400, 500

💪 풀이

'for of' 반복문을 사용하여 배열 str의 요소를 출력하는 예제입니다.

⭐for of는 배열에 들어있는 요소만을 뽑아 낼 수 있습니다.

 

1) str이라는 배열에 대한 요소([]안에 있는 것)를 i에 할당하여 console.log() 함수를 사용하여 출력하는 형식입니다.

 

+ for in과의 차이

for in은 of 와 달리 객체의 key값과 value 값을 받을 수 있기 때문에 for in문에서 배열을 사용하는 것은 적절한

방법이 아닙니다. 즉 of는 배열, in은 객체라 기억해주면 좋습니다.


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 문에 대한 예제입니다.

 

1) for...in 반복문은 객체 프로퍼티를 순회하므로 변수 key에는 순회 할 때마다 객체 obj의 프로퍼티 이름이 할당됩니다. 즉 이 식에서는 a,와 b 를 나타냅니다. 따라서 첫번째 console.log(key)를 실행하면 a, b가 출력됩니다.

2) 프로퍼티 이름 (a, b)의 값을 가져와야 하므로 대괄호([])를 사용, 즉 obj[key]를 통해 각 값을 가져옵니다.

따라서 두번째 console.log(obj[key])를 싱행하면 100, 200의 값이 출력이 됩니다.

3) for...in 1번째 반복시

a

100

4) for...in 2번째 반복시

b

200

 

⭐property : 체 안에 선언된 이름과 값으로 이루어진 한 쌍


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

{
    let num = 0;

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

답 : 1, 2, 4, 5, 6

💪 풀이

while 무한 루프와 continue, break문에 대한 예제입니다.

 

1) num이라는 변수 값이 0으로 정해져 있습니다.

2) while문을 실행하여 조건을 확인합니다.

3) 조건식이 true이기 때문에 무한으로 실행됩니다. 

4) num++ 수식이 있기 때문에 1을 더하여 시작됩니다. ( 0 이 아닌 1부터 시작, 변수는 반복될 수록 1씩 올라갑니다. )

5) 첫 if 문의 조건식에서 num의 값이 3일 때 continue문이 있기 때문에 3에 대한 실행은 건너뛰고 다시 처음으로

돌아갑니다.

6) 두번째 if문의 조건식이 num의 값이 6의 아래일 때 break실행이기 때문에 값 6까지만 실행하게 되면서

종료가 됩니다.

답 오류 6 출력되지 않음 * 수정필요


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

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

        if(i == 3){
            break;
        }
    }
}
더보기

답 : 1, 2, 3

💪 풀이

for문과 break문에 대한 예제입니다.

 

1) for문으로 1부터 5까지 5번 반복이 되는 식입니다.

2) if문의 조건식에 i의 값이 3일 때 break문이 있기 때문에 실행이 멈춥니다.

3) 3까지 실행이 됐으므로 출력값은

 

1,2,3 입니다.

 

⭐ continue는 즉시 종료이기 때문에 값이 출력되지 않고 break문은 실행이 된 후의 종료이기 때문에

값이 출력됩니다.


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

{
    let num = 0;

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

        if(num == 1){
            break;
        }
    }
}
더보기

답 : 1

💪 풀이

while문과 break문에 대한 예제입니다.

 

1) num이라는 변수가 0으로 지정되었습니다.

2) while문을 실행합니다. 여기서 조건식이 true이며 num++로 인해 1부터 시작하게 됩니다.

3) 하지만 if문의 조건식이 i가 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

💪 풀이

switch문을 사용하여 변수의 값에 따라 나누는 예제입니다.

 

1)num이라는 변수를 100으로 설정했습니다.

2)case 100:num 변수의 값이 100일 때 실행됩니다. 100이 출력이 되고 breack문 실행으로 switch문을 빠져나갑니다.

3)case 200:num 변수의 값이 200일 때 실행됩니다. 하지만 num 변수의 값은 100이므로 이 블록은 실행되지 않습니다.

4)

 

⭐switch어떤 값을 가진 대상을 두고 조건값과 일치하는지를 확인하고 동작을 수행하는 방식입니다.

특정 변수를 다양한 상황에서 비교할 수 있게 해줍니다. 


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

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

    console.log(func());
}
더보기

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

💪 풀이

리턴 화살표 함수에 관련된 예제입니다. 아래와 같습니다.

 

⭐function func(){

        const str = "실행되었습니다.";

        return str;

   };

 

document.write(func());


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

{
    let direct = 1;

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

    console.log(direct);
}
더보기

답 : 

💪 풀이

direct라는 변수는 1이며 gallery  함수는 num이라는 인자(전달되는 값)을 받습니다.

 

1) direct라는 변수의 값은 1입니다.

2) 함수의 요소명은 gallery이며 이 함수는 num이라는 인자를 받게 됩니다.

즉 num에 gallery의 값 2가 들어가게 됩니다.

3) function gallery(2)라는 조건이 갖추어 지고 식이 실행됩니다.

4) if(num == 2) num이 2일 경우 direct의 값에 1을 추가한다. 라는 의미이며 이 때 num은 2이기에 direct에 1이

추가됩니다.

5) 그러므로 기존 let direct =1 이었기 때문에 여기에 gallery의 num이 2일 경우 1을 추가한다의 direct++이 적용되어

답은 2가 됩니다.

* 기존 direct = 1 여기에 조건이 성립하여 direct++추가 = 2


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

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

답 : 5050

💪 풀이

for문을 이용해 1부터 100까지의 수를 합하는 예제입니다.

 

1) sum 변수를 0으로 지정합니다.

2) for문을 사용하여 i 변수를 1부터 100까지 1씩 증가시키며 반복합니다.

3) sum += i; 구문을 통해 i값을 sum변수에 누적하여 더합니다.

4) for루프가 종료된 후에는 1부터 100까지의 수를 더한 값이 sum 변수에 저장됩니다.

5) 출력되는 값은 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

💪 풀이

객체 비구조화 할당을 사용하는 예제입니다.

 

객체 비구조화 할당은 객체의 속성 값을 변수에 할당하기 위한 방법으로 아래와 같은 형태로 사용됩니다.

⭐{ 속성명: 변수명 }

따라서 const { a: name1, b: name2, c: name3 } = obj; 의 형태를 갖추게 됩니다. 


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

💪 풀이

객체 비구조화 할당을 사용하는 예제입니다.

 

obj 객체의 속성 값을 각 a,b,c 변수에 할당합니다. ⭐{ 속성명: 변수명 } 를 사용합니다.

따라서, const { a, b, c } = ______; 구문에서는 obj가 들어가며 객체의 a 속성 값이 a 변수에 할당되고, b 속성 값이 b 변수에 할당되고, c 속성 값이 c 변수에 할당됩니다.


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

💪 풀이

객체 전개 연산자(spread operator)를 사용하는 예제입니다.

객체 전개 연산자는 '...'기호를 사용하여 객체의 속성을 펼쳐서 새로운 객체를 만들 수 있습니다.

따라서   const spread = {...objA, ...objB}의 구문에서는 obja객체와 objb 객체의 속성을 모두 포함하는 

새로운 객체 spread를 만들게 됩니다. 통합된 객체 spread로 각 속성 값(abcd)가 출력됩니다.


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

💪 풀이

배열 char의 요소를 거꾸로 출력하는 예제입니다.

 

1) 반복문 for를 사용하여 i변수를 9부터 0까지 1씩 감소시킵니다. ( i -- )

2) 변수가 감소되면 배열이 역순으로 출력됩니다. ( 배열 번호 )


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

💪 풀이

전치 후치에 관한 예제입니다.

 

1) a, b, c, result의 변수의 값을 지정해줍니다.

2) 식의 후치에 나온 ++보다 우선순위이기 때문에 전치의 식만 실행됩니다.

3) result의 식에서  ++a = 2, b++ =2, ++c = 4 8이됩니다.

4) 변수만 실행하는 경우 전치 후치 모두 식이 실행되므로 a를 실행할 경우 값은 2, b를 실행할 경우 값은 3, c를 실행할 경우 값은 4가 됩니다.


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

{
    let i = 1;

    while(i < 5){
        console.log(i);
        i++;
    }
    console.log(i);
}
더보기

답 : 12345

💪 풀이

while반복문을 사용한 예제입니다. 

 

1) 변수 i가 1로 지정되었습니다. 

2) while반복문의 조건식 i < 5가 참일 동안 실행하게 됩니다. 여기서 i++는 변수를 1씩 증가시킵니다.

3) 조건식에 따르면 반복문은 총 4번이 실행되면서 1부터 4까지의 값이 출력 됩니다. 

4) 반복문을 빠져나온 후에도 i 변수 값인 5가 출력됩니다.

⭐while반복문에서는 i변수가 4까지만 증가하고 i 변수의 값이 5일 때 조건식 i<5가 거짓이 되면서 반복문이 빠져나오는 것이기 때문에 i 변수 값 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

💪 풀이

length로 배열의 각 요소를 합산 출력하는 예제입니다.

 

1)배열 num과 변수 sum이 선언됩니다. 

2)for 반복문으로 배열의 각 요소를 합산합니다. 여기서 length는 배열을 세어줍니다.

3) 합산하는 부분에서 sum이 0으로 선언되어 있기 때문에 i에 숫자가 들어가도 결과는 항상 0이 됩니다.


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

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

    console.log(result)
}
더보기

답 : 4

💪 풀이

비트 연산자 &을 사용하는 예제입니다.

 

1) 변수 a는 7, b는 4입니다. 7은 이진수로 111 b는 100입니다.

2) & 연산자를 사용하여 이진수로 변환한 두 값을 비교합니다.

  111

&100

---------

100

 

비트 AND 연산의 결과는 각 비트가 모두 1일 때 1을 반환하고, 그렇지 않으면 0을 반환합니다.


1 - false
2 - 1, 2, 3, 4, 5, 6
3 - 100, 200, 300, 400, 500
4 - 100, 200, 300, 400, 500
5 - a, 100, b, 200
6 - 1, 2, 4, 5, 6
7 - 1, 2, 3
8 - 1
9 - 100
10 - 함수가 실행되었습니다.
11 - 2
12 - 5050
13 - name1, name2, name3
14 - obj
15 - 100, 200, javascript, jquery
16 - T, P, I, R, C, S, A, V, A, J
17 - 8, 2, 3, 4
18 - 1, 2, 3, 4, 5
19 - 0
20 - 4