ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVASCRIPT] 원시자료형과 참조자료형
    코드스테이츠 43기 2023. 1. 2. 13:23

    원시자료형

    객체가 아니고, method를 가지지않는 6가지 타입

    string, number, bigint, boolean, undefined, symbol, (null)

    변수에는 하나의 데이터만 담을 수 있음.

     

    참조자료형

    하나의 데이터가 아닌 여러개의 데이터가 담김

    원시 자료형이 보관되는 데이터 보관함이 아닌 특별한 데이터 보관함에 저장. 이 데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장됨.

     변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있고,

    이 주소를 따라가 보면 특별한 데이터 보관함을 찾을 수 있는데,

    이 특별한 데이터 보관함(heap)은 사이즈가 변함("동적(dynamic)으로 변한다")

    이처럼 데이터는 별도로 관리되고, 우리가 직접 다루는 변수에는 주소가 저장되기 때문에 reference data type이라고 불림. 

     

    *원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담깁니다.

    *참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있습니다.

     

    first===second //true;

    first와 second는 같은주소를 공유하고 있는 참조자료형임

    따라서 first[0]은 5가 됨.

     

    x.foo는 2가 됨.(참조자료형) y에는 x의 주소를 할당하였음

     

    위 두개는 사실이지만 아래 두개는 사실이 아님.

    [1,2,3]===[1,2,3]은 다른 두개의 주소(heap)을 설정했기 때문에.

    같은 이유로 []===[]도 true가 아님

     

    ourArray[2]=25;를 할당했기 때문에 

    myArray ===[2,3,25,5]가 됨.

    이후 ourArray = undefined를 할당하였으므로 ourArray에는 원시자료형이 들어가서 myArray에는 영향을 미치지 않게 됨.

    value에 score의 값 80이 할당되고, value에 90이 할당됨

    다만 변수 score의 값 80은, 참조 자료형이 아니기 때문에 주소값을 전달하지 않고, 값 자체를 복사하여 전달하게 됩니다. 그래서 함수에서 어떤 일이 발생했던가와 관련이 없이 score는 초기에 할당된 값 80이 그대로 유지됩니다

     

     

Designed by Tistory.