ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이 문제들을 다 풀면 객체지향 JavaScript, Value vs. Reference 이해 끝!
    problem 2020. 4. 6. 19:39

     

    문제의 출처는 코드스테이츠에 있습니다.

     

     

    Q. 코드가 실행된 후, x의 값은?

    let x = 2;
    let y = x;
    y = 3;
    더보기

    Answer : 2

    원시타입 (primitive type)은 값 자체가 복사가 된다. 그래서 기존 값에는 변화를 주지 않는다.

     

     

    참고

     

    Q. 코드가 실행된 후, x.foo의 값은?

    let x = { foo: 3 };
    let y = x;
    y.foo = 2;
    더보기

    Answer : 2

    이 경우에는 참조타입 (reference type) 이다.

    콘솔에 찍어보면 x와 y의 참조주소가 같다. ( x === y 라고 뜸! )

     

    Q. 코드가 실행된 후, x.foo의 값은?

    let x = { foo: 3 };
    let y = x;
    y = 2;
    더보기

    Answer : 3

    두번째 줄까지는 참조타입 (reference type) 이었으나, 

    세번째 줄 y에 원시타입 (primitive type)인 값을 대입해주었으므로

    y는 더이상 x를 참조하지 않게 된다. 그러므로 foo의 값은 변화가 없다.

     

    Q. 코드가 실행된 , myArray 값은?

    let myArray = [2, 3, 4, 5];
    let ourArray = myArray;
    ourArray[2] = 25;
    ourArray = undefined;
    더보기

    Answer : [2, 3, 25, 5]

    myArray ourArray 같은 주소값을 참조하기 때문에 ourArray 바꾸는게 myArray 바꾸는 것과 동일하다.

    그러고나서 ourArray 에는 undefined 들어가서 값이 바뀐다.

    그렇지만 myArray는 이미 3번째 줄에 의해 2번째 인덱스 값이 바뀌었기 때문에 [2, 3, 25, 5]가 되는 것!!

     

    Q. 코드가 실행된 , score 값은?

    let score = 80;
    function doStuff(value) {
    value = 90;
    }
    doStuff(score)
    더보기

    Answer : 80

     

    Q. 함수가 실행된 , 콘솔에 출력되는 args 값은?

    function printMaxNums(...args) {
    console.log(args)
    }
    printMaxNums(10, 30, 40)
    더보기

    Answer : [10, 30, 40]

    Rest parameter로 들어가면 배열로 출력된다.

     

    참고

     

    Q. 코드가 실행된 , value값은?

    let arr = [10, 30, 40, 20];
    let value = Math.max(arr)
    더보기

    Answer : NaN

    함정! Math.max의 argument는 num1, num2, num3 ... 이렇게 들어가야 한다.

     

    Q. 코드가 실행된 , value값은?

    let arr = [10, 30, 40, 20];
    let value = Math.max(...arr)
    더보기

    Answer : 40

    ...arr 에는 배열이 들어가면 자동으로 10, 30, 40, 20 이렇게 풀어진다!

     

    Q. 코드가 실행된 , value값은?

    let arr = [10, 30, 40, 20]
    let value = [...arr]
    더보기

    Answer : [10, 30, 40, 20]

     

    참고

     

    댓글

Designed by Tistory.