ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL_200915([JS33] 3. Value Type, Reference Type)
    Today I Learned 2020. 9. 15. 21:09

     

     

    자바 스크립트는 value 타입과 reference 타입으로 나뉩니다.

     

    value 타입은 5가지가 있습니다. (primitives)

    Boolean, null, undefined, String, Number

     

    reference 타입은 3가지가 있습니다.이들은 모두 기술적으로 객체이므로 Object라고 합니다.

    Array, Function, Object

     

     

    Primitives

    let x = 10;
    let y = 'abc';

    메모리에 x라는 변수에 10(Number)이 할당되고, y라는 변수에 'abc'(String)이 할당됩니다.

    변수에 할당되는 값을 다른 변수에 저장한다면 ' = '을 사용하여 복사할 수 있습니다.

    let x = 10;
    let y = 'abc';
    
    let a = x;
    let b = y;

    이제는 메모리에 x의 값인 10이 a라는 변수에 복사되고, y의 값인 'abc'가 b라는 변수에 복사됩니다.

     

     

    Objects

    기본 타입의 데이터가 아닌 값은 메모리의 값은 참조입니다.

    참조는 메모리에서 객체의 위치를 가리키고 변수는 값을 포함시키지 않습니다.

    let array = [];

    다른 변수에 복사될때 객체는 값 대신 참조로 복사됩니다. 

    let array = [7];
    let number = array;

    새로운 참조를 재할당하는 경우에 자바 스크립트 엔진은 Garbage collection으로 사용하지 않는 객체를 지웁니다.

     

     

    == 와 ===

    변수를 비교하여 동일한 항목이라면 true가 출력됩니다.

    let arrRef1 = [1, 2, 3];
    let arrRef2 = [1, 2, 3];
    
    console.log(arrRef1 === arrRef2); // false
    let arrRef1 = [1, 2, 3];
    let arrRef2 = arrRef1;
    
    console.log(arrRef1 === arrRef2); // true

    단순히 두 개의 개별 객체의 속성이 같음을 확인하고 싶다면 둘 다 문자열로 변환한 다음 비교합니다.

    let arrRef1 = JSON.stringify(arr1);
    let arrRef2 = JSON.stringify(arr2);
    
    console.log(arrRef1 === arrRef2); // true

     

     

     

     

    'Today I Learned' 카테고리의 다른 글

    TIL_200919(GoF pattern)  (0) 2020.09.18
    TIL_200916([JS33] 4. 암시적 변환)  (0) 2020.09.17
    TIL_200912([JS33] 2. Primitive Types)  (0) 2020.09.12
    TIL_200911(PixiJS-character)  (0) 2020.09.11
    TIL_200910(PixiJS-Container)  (0) 2020.09.10

    댓글

Designed by CHANUL