number
(Infinity, -Infinity, NaN도 숫자 타입), bigint
, string
, boolean
, null
, undefined
, symbol
// ex)
let a = 10;
a = 20;
위 코드를 메모리에서 바라보면
처음 a
는 0x01
에 10
이라는 값이 저장
그리고 a = 20;
이라고 작성하면0x01
이 아닌 새로운 공간 0x02
에 20
이라는 값이 저장된다.
즉, 0X01에 10이 20으로 수정된 것이 아니기 때문에 불변성을 가진다고 함
(변경이 불가능하다는 뜻은 메모리 영역에서의 변경이 불가능하다는 뜻. 재할당은 가능)
// ex)
let x = 1;
let y = x; // y=1
y = 2; // x=1 y=2
array
, function
(원시 타입 이외의 모든 값)// ex)
let fruit ={
name : 'apple',
color : 'red',
}
let food = fruit; // food = fruit값을 가지고 있는 주소값
food.name = 'melon'; // fruit.name에 'apple'이 'melon'으로 변경됨
fruit
는 메모리 영역에서 스택
에 저장된다.
fruit의 인스턴스 값
{
name: 'apple',
color: 'red'
}
는 메모리 영역에서 힙
에 저장된다.