Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

Leeyanggoo

[JS] 문제는 돌아오는 거야 본문

2023/오답노트

[JS] 문제는 돌아오는 거야

Leeyanggoo 2023. 3. 17. 11:34

자바스크립트 테스트

수업시간에 배운 자바스크립트를 간단하게 테스트합니다. 제대로 배웠는지 간단하게 테스해보세요!

 

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

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

 

더보기

함수가 실행되었습니다.


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

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

 

더보기

함수가 실행되었습니다.


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

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

 


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
}

 


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


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

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

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

 

더보기

flase, " ", 0, null, undefined


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

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

 

더보기

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


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

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

 

더보기

1 1 2 3 4 5


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]


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

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

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

    //100 200 300 400 500
}

 


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

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

 

더보기

const func = str => str


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

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

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

    //결과값
    //100 200 300 400 500
}

 


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


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


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

 


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

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

    console.log(result, a, b)
}

 

더보기

4, 7, 4


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


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

 


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

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

 


틀린 문제 풀이

 

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

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

 

for문은 항상 조건을 잘 보고 계산해야 합니다.

다음 문제는 1부터 10까지 증가하는 i를 모두 더한 sum의 값을 적는 문제입니다.

다만 이번 문제는 i가 1씩 증가하는 것이 아니라 2씩 증가하기 때문에 1, 3, 5, 7, 9의 홀수의 합을 구해야 했습니다.

근데 저는 i가 9일 때 11까지 데이터를 반환한다고 생각해 36을 적어서 틀렸지 뭐예요...ㅠㅠ

정답은 1, 3, 5, 7,  9를 더한 25입니다!


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

 

다음 문제는 배열에 데이터를 추가하거나 제거하는 함수인 "push()"와 "unshift()"가 나온 문제였습니다.

저는 document.write()에 들어간 변수가 "arr"이라서 document.write(text)가 아니기 때문에 두 정답 모두 100, 200, 300, 400, 500을 적었는데요...

자바스크립트는 위에서 아래로 코드를 실행하기 때문에 이미 push와 unshift로 새로운 배열이 할당된 시점에서 arr과 arr2의 데이터는 '600'이라는 데이터가 들어간 상태입니다.

push와 unshift의 속성을 정리해볼게요!

 

메서드 설명
push() 배열의 끝에 값을 추가하고, 추가한 배열의 길이를 반환합니다.
unshift() 배열의 맨 앞에 값을 추가하고, 추가한 배열의 길이를 반환합니다.
pop() 배열의 마지막 값을 제거하고, 제거한 요소의 값을 반환합니다.
shift() 배열의 첫 번째 값을 제거하고, 제거한 요소의 값을 반환합니다.

 

여기서 주의할 점은 push()와 unshift()는 값을 추가하면서 배열의 길이를 반환하고,

pop()와 shift()는 값을 제거하면서 제거한 값을 반환한다는 점입니다!

만약 document.write(text) 혹은 document.write(text2)가 문제였다면 결과는 배열의 길이인 "6"이 됩니다.

따라서 정답은

document.write(arr) = 100, 200, 300, 400, 500, 600

document.write(arr2) = 600, 100, 200, 300, 400, 500


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

{
    let num = 0;

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

 

while문은 while(조건식)에 어떤 불리언(boolean) 값이 들어가느냐에 따라 진행이 달라집니다.

위의 문제는 "false"이므로 while문이 한 번도 진행이 되지 않기 때문에 num은 증가하지 않고 결과는 "0"이 됩니다.

while문의 조건으로 "null", " "(빈 문자열), "undefined"가 들어간 경우에도 "false"로 평가됩니다.


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

 

위에서 말씀드렸다시피 for문은 조건을 잘 봐야 한다고 말씀드렸는데요.

저는 배열이 당연히 70부터 75, 80, 85, 90으로 증가한다고 착각했습니다...ㅠㅠ 시험이라 긴장했나 봐요...

if(data[i]>80)의 조건으로 맞는 것은 "90" 하나밖에 없기 때문에 첫 if문이 성립되는 건 한 가지!

따라서 best는 한 번밖에 증가하지 않습니다.

따라서 best는 1, score는 90의 결과가 나옵니다.

위의 코드는 최고점인 사람을 뽑을 때 쓰는 것이라 생각하시면 됩니다!