공부/오답노트

2023. 03. 17 / 자바스크립트 테스트 & 오답노트 3

우당당쿵당콩탕 2023. 3. 17. 10:36
728x90
반응형

자바스크립트 테스트 3

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

{
    (function(){
        console.log("함수가 실행되었습니다.");
    })();
}
더보기

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

💪풀이: 

즉시 실행 함수에 대한 문제입니다.

 

이 함수는 선언되자마자 즉실행됩니다.


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

{
    function func(str = "함수가 실행되었습니다."){
        document.write(str);
    }
    func();
}
더보기

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

💪풀이:

매개변수를 사용하는 자바스크립트 함수를 정의하고 호출하는 예시입니다.

 

함수의 이름은 func이며 하나의 매개변수 str을 가집니다. 이 매개변수(str)은 "함수가 실행되었습니다. " 라는 문자열을 가지고 있습니다. 함수가 호출될 때 인자가 전달되지 않았으므로 기본값인 "함수가 실행되었습니다."가 출력됩니다.


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

{
    let sum = 0;
    for(var i=1; i<=10; i+=2) {
        sum += i;
    };
    document.write(sum);
}
더보기

답: 25

💪풀이:

for반복문을 이용하고 sum으로 합을 구하는 식입니다.

 

sum이라는 변수에 0이 선언되었습니다.

i=1;이기 때문에 시작은 1부터이며 조건은 'i가 10보다 작거나 같을 때까지' 증가감은 +2이므로 아래와 같습니다.

1 (시작)

1 + 2(증가식 i+=2) = 3

3 + 2(증가식 i+=2) = 5

5 + 2(증가식 i+=2) = 7

7 + 2(증가식 i+=2) = 9

 

1 + 3 + 5 + 7 + 9 = 25


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

{
    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

💪풀이:

객체의 데이터 저장하는 방법 충 하나로 키와 값으로 구성되어있습니다.


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

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

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

    //100
    //200
    //javascript
    //jquery
}
더보기

답: ...objA, ...objB

💪풀이:

객체 펼침 연산자에 대한 예제입니다.

 

펼침 연산자는 데이터를 추가해서 불러오거나 두 개의 데이터를 합칠 수 있습니다.

이 예제에서는 objA와 objB를 하나로 합쳐 spread라는 변수에 선언을 해주었기 때문에 spread.a 로 출력하게 됩니다.


06.다음의 결괏값이 나오도록 보기에서 빈칸에 해당되는 것을 모두 고르시오.

{
    if( _____ ){
        document.write("조건문이 실행되었습니다.(true)");
    } else {
        document.write("조건문이 실행되었습니다.(false)");
    }

    //document.write("조건문이 실행되었습니다.(false)");
    //보기
    //true, false, 1, "1", "", 0, null, undefined, [], {}
}
더보기

답: false, " ", null, undefined, 0

💪풀이:

 

값이 숫자, 문자열, 배열, 객체, true일 경우

실행되었습니다.(true)


값이 0, null, undefined, flase, ""(빈 문자열)일 경우

실행되었습니다.(flase)


07.다음의 if문을 삼항 연산자로 변경하시오.

{
    if( num == 100 ){
        document.write("true");
    } else {
    	document.write("false");
    }
}
더보기

답: num == 100 ? document.write("true") : documeent.write("false")

💪풀이:

 

(  조건(if)  )  ?  document.write("true") : documeent.write("false")


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

{
    for(var i=1; i<=1; i++){
        document.write(i);
        for(var j=1; j<=5; j++){
            document.write(j);
        }
    }
}
더보기

답:

1

12345

💪풀이:

 

i는 초기값(시작값)이 1이고 조건이 1보다 작거나 같다 이기 때문에 1번으로 루프가 끝나지만

j는 루프가 5까지 가야하게 때문에 12345가 출력됩니다.


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

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

    for(let i=0; i<num.length; i++){
        document.write(_______);
    }

    //100 200 300 400 500
}
더보기

답: num[i]

💪풀이:

배열에서 데이터를 불러오는 예제로 배열을 출력할 때는 항상 변수를 먼저 써주어야합니다.

여기서는 변수 num이라는 친구이기 때문에 document.write에 num을 써주고 그 뒤에 괄호를 사용해 i를 씁니다.


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

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

    num.forEach(function(el){
        document.write(________);
    });

    //100 200 300 400 500
}
더보기

답: el

💪풀이:

forEach( ) 메서드는 배열의 값, index, 배열을 받아 올 수 있는데,

이 문제에서는 배열의 요소 값만 받아오게 됩니다.

그러므로 빈칸에는 element를 의미하는 el가 들어가게 됩니다.


11. 다음을 보고 리턴값을 생략하여 한줄로 표현하시오!

{
    const func = str => {
        return str;
    }
}

 

더보기

답: const func = str => str;

💪풀이: 

축약식으로 return을 삭제해주고 str를 한 줄로 정돈해줍니다.


12. 다음의 결괏값을 보고 빈 칸을 채우시오.

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

    for(let index of _____ ){
        document.write(index);
    }

    //결과값
    //100 200 300 400 500
}
더보기

답: num

💪풀이:

배열을 지정해주어야 하기 때문에 num이라는 이름을 가진 변수가 들어가게 됩니다.


13. 다음의 결과값을 작성하시오.

{
    function func(){
        let i = 5, j = 4, k = 1, l, m;
        l = i > 5 || j != 0;
        m = j <= 4 && k < 1;
        document.write(l);
        document.write(m);
    }
    func();
}
더보기

답: true false

💪풀이:

|| (or) 이라는 연산자와 && (AND)라는 연산자를 활용한 예제입니다.

 

기본 변수 지정

let i = 5, j = 4, k = 1, l m;

l = i > 5 || j != 0! // || 둘 중 하나라도 맞다면 true ( !=은 틀리다라는 뜻 )입니다.

즉, i=5인데 5와 같은이 false. j != 0 j와 0은 틀리다라는 뜻인데 틀리니 true

밑에 줄도 마찬가지로 &&의 경우 둘 다 맞아야 true인데 맞지 않으므로 flase가 나온다.


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

{
    const arr = [100, 200, 300, 400, 500];
    const text = arr.push(600);

    document.write(arr);

    const arr2 = [100, 200, 300, 400, 500];
    const text2 = arr2.unshift(600);

    document.write(arr2);
}
더보기

답: 

100 200 300 400 500 600

600 100 200 300 400 500

💪풀이:

push의 경우 지정된 수를 맨 뒤로 넣으라는 명령입니다.

unshift의 경우 지정된 수를 맨 앞으로 넣으라는 명령입니다.


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

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

    for(let key in obj) { 
        console.log(key);
    }
}
더보기

답: 

a b

💪풀이:


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

{
    let num = 0;

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

답: 0 

💪풀이: 

while문을 시작할때 이미 flase이기 때문에 식은 더 이상 진행되지 않고 0으로 종료된다.


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

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

    console.log(result, a, b)
}
더보기

답: 4 7 4

💪풀이:

비트연산자를 활용하는 예제입니다.

7을 이진수로 바꾸면 111이며 4는 100입니다

1 1 1

1 0 0

-------

1 0 0

 

& (AND)의 경우 두 개가 다 맞다면 1을 출력하고 나머지는 0이다.


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

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

    console.log(result);
    console.log(a);
    console.log(b+c);
    console.log(c);
}
더보기

답: 8 2 7 4

💪풀이: 

전치와 후치라는 연산자와 우선순위에 따른 예제입니다.

a = 2, b =3, c =4 이지만 이것은 개별로 볼 때이고 b의 경우 우선순위 때문에 result라는 변수에서는 2로 측정이 됩니다.


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

{
    let data = [70, 80, 75, 60, 90];
    let best = 0;
    let score = 0;

    for(let i=0; i<data.length; i++){
        if(data[i]>80) {
            best++;
        }
        if(score < data[i]) {
            score = data[i];
        }
    }

    console.log(best, score)
}
더보기

답: 1 90

💪풀이:

변수 data는 숫자를 담고 있는 배열입니다.

변수 best는 0으로 선언합니다.

변수 score는 0으로 선언합니다.

 

for(let i=0; i<data.length; i++)에서 data의 배열을 훑습니다. 여기서 조건이 if(data[i]>80)이면 best라는 변수에 1을 추가한다. 인데 80보다 큰 수는 90으로 1개가 있습니다. 그러므로 뒤의 best++, best라는 변수에 1을 추가합니다.

 

그러므로 best = 1;이 됩니다.

 

if(score < data[i]) 에서는 score에 0, data[i]에 70부터 차례대로 대입이 됩니다. 

예를 들어  0 (= score) < 70 (data[i]) 일 경우 조건이 성립하기 때문에 그 다음식인 score = data[i]; 에서 오른변에 있는 data[i]의 값인 70이 score로 담기게 됩니다. 그러므로 score는 70이 되며 이후 data[i]에는 배열의 숫자들이 차례대로 들어가게 됩니다. 조건이 성립할 경우 score는 숫자가 바뀌게 되며 최종적으로 90이 됩니다.


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

{
    function func(num1, num2){
        if(num1 > num2) return num1
        else return num2
    }
    console.log(func(10, 23) + func(40, 50))
}
더보기

답: 73

💪풀이:

 

포인트는 func(10,23) func(40,50) 에서 첫번째 수과 num1이며 두번 째 수가 num2입니다.

대입하여 조건이 참일 경우 반환되는 값을 더하면 됩니다.