String, Number, Boolean, undefined, null , bigint , symbol
Object, Array, Function
원시 데이터는 변경 불가능하다.
변경 불가능한 값이기 때문에 값을 직접 변경할 수 없다.
변수에 할당한 원시 값을 변경하면 메모리에 있던 값이 바뀌는 것이 아니라 다른 곳에 변경된 값을 재할당하고 변수에 메모리 주소값을 변경한다.이것을 불변성이라고 한다.
let a = 1;
let b = 3;
console.log(a === b); // false
let b = 1;
console.log(a === b); // true
너무나 당연한 결과지만 불변성을 생각하며 다시 보자.
원시값은 변경할 수 없다.
b라는 변수에 3이라는 원시값 Number가 할당 되었다. 이때 변수에는 3이 저장된 메모리의 주소가 할당된다.
그 주소를 가르키던 b에 다시 1이라는 값을 할당하면 1이 저장된 메모리의 주소가 할당된다.
즉, 비교를 할 때 1이라는 값이 저장된 같은 메모리 주소를 가리키면 true를 반환한다.
의문! => js 는 같은 원시값도 새로운 메모리에 할당하고 서로 다른 메모리 주소를 갖는다고 알고 있는데 설명과 다르다.
참조형은 데이터를 변경할 수 있다.
이러한 구조의 단점은 여러 식별자에 할당하고 하나의 객체를 공유하게 될 수 있다.