javascript

TEST03

grovy 2023. 3. 17. 10:36
728x90

오늘은 학원에서 시험을 봤어요 같이 풀어봐요 ! 

 

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

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

즉시 실행 함수에 관한걸 물어보네요 !

function(){} 을 ()로 한번 감으면 스크립트 로딩시 즉시 실행되요 ! 

 

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

i가 2씩 증가하고있군요 

sum += 구문은 sum = sum + i 처럼 증가하구있구요

i 값은 1, 3, 5, 7, 9 이므로

sum의 최종값은 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타입을 const = {a, b,c}에 넣어주는 거에요

그래서 답은 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을 할경우 100 , 200 으로 출력이 되요 

const spread = ( ...objA, ...objB ) 가 답이에요 ! 

 

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

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

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

true 인것만 확실하게 외워볼게요 

10 '1'

 { [ ] }

true

"abc"

이렇게 외워요 다음엔 틀리지 말길 ! 

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

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

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

이렇게 표현할수 있어요 ! 평소에 3항연산자를 자주 썻다면 쉬웠겠죠 ? 

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

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

for문안에 i <=1 이라는 함정이 있는 문제에요 ! 

i = 1 일때 1번 실행되고 

for문안에 for문은 정상 실행되어서 

112345가 출력되요

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

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

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

    //100 200 300 400 500
}

for문안에 배열을 순차적으로 불러오는 문제에요 
num[i] 를 통해 i값이 순차적으로 커질때 
값이 100 200 300 400 500출력이 된답니다 ! 

 

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

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

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

    //100 200 300 400 500
}

forEach문은 
forEach( 값, 순서(키))를 반환해요 ! 

그래서 el을 적으면 값들을 순차적으로 반환하구요 

숩다수워

 

 

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

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

const func = str => str 로 표현할수있어요 ! 
func = str => str 로도 표현가능 ! (선언함수로는 요렇게)

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

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

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

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

포인키~ 포오브벨~ 이렇게 외웠어요 ! 

 for ( let i in num)  >> in이 들어가서 key 즉 순서반환

 for ( let i of num)  >> in이 들어가서 of 즉 value 값 반환

답은 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();
}

l 과 m 의 값이 true 인지 false 인지 구분하는 문제에요 
l 과 m 의 값을 && 과 || 로 and 인지 or인지 확인하여
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);
}

배열의 메서드가 어떻게 실행되는지 나타낸 글이에요 ! 

  구문 결과 설명
push()     const arrNum1 = [100, 200, 300, 400];
    const arrPush1 = arrNum1.push(500);
    console.log(arrNum1);
(5) [100, 200, 300, 400, 500] 마지막요소에 추가!
pop()     const arrNum2 =[100, 200, 300, 400, 500];
    const arrPush2 = arrNum2.pop();
    console.log(arrNum2);
(4) [100, 200, 300, 400] 마지막요소를 삭제 !
unshift()     const arrNum1 = [100, 200, 300, 400];
    const arrPush1 = arrNum1.unshift(600);
    console.log(arrNum1);
(5) [600, 100, 200, 300, 400) unshift() 메서드는 배열 처음 요소에 요소를 추가
shift()     const arrNum2 = [100, 200, 300, 400];
    const arrPush2 = arrNum2.shift();
    console.log(arrNum2);
(3) [200, 300, 400] shift() 메서드는 배열 처음 요소를 삭제

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

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

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

포인키~ 포오브벨~ 이렇게 외웠어요 ! 

 for ( let i in num)  >> in이 들어가서 key 즉 순서반환

 for ( let i of num)  >> in이 들어가서 of 즉 value 값 반환

즉 a , b 를 반환해요 

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

{
    let num = 0;

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

while(false)이기 때문에 while문이 동작 하지 않고 num = 0 이므로 0을 출력해요 !

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

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

    console.log(result, a, b)
}

논리연산자 & 는 2진수로 표현했을때 같은위치의 같은 값만 출력합니다.

7은 2진수로 111

4는 2진수로 100

7 & 4 는 100 >> 이값은 10진수 4입니다.

그래서 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);
}

전치 후치 연산자에 대해 물어보고있네요 
++a 는 
result = ++a << 실행전에 값을 증가시키고 
b++ 은
result = ++a + b++ ; 을 실행하고 나서 증가시켜요
따라서 

result = 2 + 2 + 4 ; >>> 8 

a = 2 , b = 3 , c = 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)
}

for문의 안에 조건을 하나씩 뜯어보면서 실행해보면 쉽게 답이 나왕 
data[i] > 80 일때
best++ ; best값을 1증가 

score < data[i] 일때
score = data[i] 일 경우는 
초기값 0 인 score 이므로 data[i]의 값이 i가 커질때마다
배열안의 값을 반환 해주는뎅 
그 값이 score 값보다 클경우에 score 값을 갱신 시켜줘요
가장큰 수만 남겠죠 ? 

그래서 90 이라는 숫자가 score에 들어가요 ! 

 

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

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

func함수가 실행될때 

(10 , 23), (40,50)값이 들어가서 

 

if문(num1  > num2)조건이 아니기 때문에  else 조건이 실행되어서 

값은 큰값만 남아요

 

그걸 + 해주면 73이 나와요