Blinking Hello Kitty Angel

javascript문제풀이

자바스크립트 기초 연습문제

xoouxa 2023. 3. 10. 12:48

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

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

안녕하세요 o((>ω< ))o 오늘은 자바스크립트 테스트 오답풀이를 한 번 해보도록 하겠습니다.

여러분들도 함께 지금까지 공부 한 내용들을 제대로 배웠는지 간단하게 테스해보세요!

 

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

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

정답 : false

풀이 : 조건문에서 null은 false한 값으로 간주되기 때문입니다. 따라서 else 블록이 실행되어 "false"가 출력됩니다.

 

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

{
    let num = 0;
    while( num <= 5 ){
        num++;   //1씩 커지는 게 먼저순서
        console.log(num);  
    }
}

출력문이 어느 위치냐에 따라 값이 달라짐. 만약 num이 출력문보다 밑에 있다면 0부터 출력
num이 출력문보다 위에 있으니 이번 건 1부터 출력 됨

정답 : 1 2 3 4 5 6 

풀이 : while 루프가 실행될 때마다 num 변수가 1씩 증가하고, console.log() 함수를 통해 현재의 num 값을 출력합니다. 이 과정은 num이 6이 되면 종료됩니다. 

while

 

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

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

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

정답 : 100 200 300 400 500

풀이 : 배열 str의 각 요소를 출력합니다. forEach() 메서드는 배열의 각 요소에 대해 주어진 콜백 함수를 실행합니다. 이 경우에는 각 요소를 인자로 받아서 그대로 출력하는 함수가 콜백 함수로 사용됩니다.

 

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

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

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

정답 : 100 200 300 400 500

풀이 : 배열 str의 각 요소를 출력합니다. for...of 문은 배열의 각 요소에 대해 반복합니다. 이 경우에는 i 변수가 배열의 각 요소를 차례대로 참조하게 됩니다. 따라서 출력 결과는 다음과 같습니다.

 

 

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

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

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

정답 : a

         100

         b

         200

풀이 : 이 코드는 객체 obj의 속성명(key)과 속성값을 출력합니다. for...in 문은 객체의 속성을 열거하는 데 사용됩니다. 이 경우에는 key 변수가 객체 obj의 속성명을 차례대로 참조하게 됩니다. 그리고 obj[key]를 통해 해당 속성의 값을 가져올 수 있습니다. 

 

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

{
    let num = 0;

    while( true ){
        num++;      //얘의 위치도 신경쓰기
        if( num == 3 ){
            continue;   //continue는 강제로 해당하는 숫자를 넘김 스킵개념
        }
        if( num > 6 ){
            break;   //더이상 실행되지 않음 끝
        }
        console.log(num);
    }
}

정답 :   1 2 4 5 6

풀이 : 이 코드는 1부터 6까지의 숫자를 출력하되, 숫자 3은 출력하지 않습니다. while 루프가 실행될 때마다 num 변수가 1씩 증가하고, 만약 num이 3이라면 continue 문에 의해 다음 루프로 진행하지 않고 건너뜁니다. num이 6을 초과하면 break 문에 의해 루프가 중단됩니다.

 

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

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

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

정답 : 1 2 3

풀이 : 이 코드는 1부터 3까지의 숫자를 출력합니다. for 루프가 실행될 때마다 i 변수가 1씩 증가하고, console.log() 함수를 통해 현재의 i 값을 출력합니다. 만약 i가 3이 되면 break 문에 의해 루프가 중단됩니다.

 

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

{
    let num = 0;

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

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

정답 : 1

풀이 : 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");
    }
}

정답 : 100

풀이 : switch문에 num을 넣고 case대로 확인하는 문제

case 100은 let num = 100에 있는 100이 일치하기 때문에 case 100에서 100이 출력되고 break이기 때문에 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(num)이라는 이름으로 정의되어 있으며, 매개변수 num은 이동 방향을 나타냅니다. num이 1이면 갤러리를 왼쪽으로 이동하고, num이 2이면 갤러리를 오른쪽으로 이동합니다. 함수 내부에서는 이동 방향을 나타내는 direct 변수를 변경합니다.

하지만, 함수 호출 시에 매개변수로 2를 전달하고 있기 때문에, if(num) 조건문의 true 블록이 실행됩니다. 그러므로, num == 2를 검사하고 direct를 1 증가시키게 됩니다. num == 1인 경우는 else 블록에서 처리하도록 되어 있지만, 이 경우는 발생하지 않기 때문에 함수가 끝나고 나면 direct의 값은 2입니다.

 

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

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

정답 : 5050

풀이 : 0부터 100까지의 합을 구하는 문제입니다.

 

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 키워드를 사용하여 obj 객체를 상수로 선언하였고, 디스트럭처링을 사용하여 변수 a, b, c에 각각 obj 객체의 a, b, c 속성의 값이 할당되었습니다. 그리고 이때 변수 이름을 각각 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

풀이 : obj 객체의 a, b, c 속성의 값은 각각 100, 200, "javascript"입니다.

const 키워드를 사용하여 obj 객체를 상수로 선언하였고, 디스트럭처링을 사용하여 변수 a, b, c에 각각 obj 객체의 a, b, 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

풀이 : 객체 병합에 스프레드 문법을 사용하는 예제입니다. objA와 objB 객체를 스프레드 문법으로 병합하여 spread 객체에 저장하고, document.write() 메소드를 사용하여 해당 객체의 속성에 접근하여 값을 출력합니다.

spread 객체에는 objA와 objB의 속성이 모두 포함되어 있으므로, spread.a와 spread.b에는 각각 100과 200의 값이 저장됩니다. 그리고 spread.c와 spread.d는 각각 "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

풀이 : 배열 char의 요소를 거꾸로 출력합니다. for 루프가 실행될 때마다 i 변수가 1씩 감소하면서, console.log() 함수를 통해 char 배열의 i번째 요소를 출력합니다.

 

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

풀이 : result 변수에 할당되는 값은 ++a (즉, a=2) + b (즉, b=2)++ + ++c (즉, c=4)입니다. 따라서 result의 값은 8이 됩니다.

a 변수는 전위 증가 연산자 ++a에 의해 1 증가하여 2가 됩니다.b 변수는  후위 증가 연산자 b++에 의해 1 증가하지만, 이 연산자는 현재 표현식에 사용된 이후에야 적용되므로, result에선 2로 출력, b에선 3으로 출력 됩니다.

c 변수는 전위 증가 연산자 ++c에 의해 1 증가하여 4가 됩니다

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

{
    let i = 1;

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

정답 : 1

풀이 : 이 코드는 무한 루프를 발생시키므로, 실행이 멈추지 않습니다.

while문의 조건은 i가 5보다 크다는 것입니다. 그러나 초기값으로 i가 1로 설정되어 있기 때문에,

while문의 본문이 실행되지 않고 바로 while문을 빠져나오게 됩니다.

따라서 마지막으로 console.log(i)를 통해 1이 출력됩니다.

 

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

풀이 : num.length는 let num = [32,93,15,86,50]에 대한 갯수를 뜻합니다.

따라서 num.length는 5입니다.

i는 0에서 시작하고, 5보다 큽니다.

sum 값이 0이기 때문에 i와 곱해도 결과는 0입니다.

 

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

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

    console.log(result)
}

정답 : 4

풀이 : AND연산자이기 때문에 두 수의 이진수 각 자리를 비교하고, 둘 다 1인 자리에서 1을 반환합니다.

7을 2진수로 변환하면 0111 이고

4를 2진수로 변환하면 0100 입니다.

각 자리를 비교하여 둘 다 1인 값이 2의 2승이기 때문에 결과는 4를 출력합니다.

 

✨ 감사합니다.

'javascript문제풀이' 카테고리의 다른 글

정보처리기사 오답노트  (9) 2023.04.22
자바스크립트 기초 연습문제  (14) 2023.03.25
자바스크립트 테스트 오답풀이  (28) 2023.03.17