원시 값은 변경 불가능한 타입을 뜻한다.
한 마디로 읽기 전용이다.
let score; // 주소: 0x0000F2 & 값: undefined
score = 80; // 주소: 0x000F03 & 값: 80
score = 90; // 주소: 0x001332 & 값: 90
주소가 계속 바뀌면서 재할당을 해주는 방식이다.
원본 값 자체는 바뀌지 않는다.
이를 불변성이라는 특징을 가지고 있다고 한다.
객체는 참조 타입이며, 변경 가능한 값이다.
let person = { // person 주소: 0x000332 & 값: 0x0000FF
name: 'Lee' // { name: 'Lee'} 주소: 0x0000FF
};
person.name = 'Kim'; // person 값에 있는 객체 값 접근
console.log(person.name); // 'Kim'
객체는 값에 의한 전달 vs 참조에 의한 전달에도 썼듯이, 변수명은 객체가 있는 메모리 주소를 가리키고 있을 뿐이다.
쉽게 말해, 참조만 할 뿐이다.
객체는 비용 절약과 성능 향상을 위해 설계되어 있다.
각자 메모리마다 원시 값처럼 객체를 갖고 있다면, 관리가 어렵다.
이유는 크기가 일정하지 않기 때문이다.
원시 값의 특성과 객체의 특성을 정리 글 잘봤습니다. 👍