변수에 값 자체가 담김
=> 원시 자료형 변수는 '값'을 하나씩 담고 있다 = 데이터를 담고 있다.
종류 : string, number, bigint, boolean, undefined, symbol, null
null은? console.log(typeof null) //object 는 아주 유명한 javascript 초기 버전 버그인데, 이 때문에 객체여서 참조 자료형이라고 헷갈리기 쉽다. 하지만 MDN 공식 문서에서도 볼 수 있듯이 원시 자료형 중 하나이다.
특징 : 담겨있는 데이터 자체를 변경할 수는 없다(immutable). 하지만 이 변수에 다른 데이터를 재할당할 수 있다.
변수에 메모리(값의 보관함) 주소가 담김
=> 원시 자료형처럼 고정된 크기의 보관함이 아님 = 동적으로 크기가 변하는 데이터를 보관하기 위해 변수가 아닌 다른 곳에 데이터를 저장하고 그 주소만 변수에 할당한다.** => 여기에서 동적으로 변하는 데이터 보관함이 바로 memory heap이다.
종류 : 위 7개의 원시 자료형이 아닌 모든 자료형은 참조 자료형이다. 대표적으로 배열(Array), 객체(Object), 함수(funtion(){})가 있다.
특징 : 참조 자료형 변수에 값을 재할당하면 주소를 참조한 모든 값이 영향을 받는다. = 해당 주소를 사용하는 모든 변수 사이에 값이 공유된다는 뜻. 참조형 데이터는 원시 자료형 데이터의 집합이다.
memory heap은 참조형 데이터들이 저장되는 공간
javascript v8 엔진 내에는 하나의 call stack 과 하나의 heap이 존재한다.
javascript 메모리 누수