원시 값은 변경 불가능한 값
- 따라서 변수 값을 변경하기 위해 원시값을 재할당하면 새로운 메모리 공간을 확보하고 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경. 이러한 특성을 불변성이라 한다.
- 불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 방법이 없다.
자바스크립트 객체의 관리 방식
-> 자바스크립트 객체는 프로퍼티 키를 인덱스로 사용하는 해시테이블이라고 생각할 수 있다.대부분의 자바스크립트 엔진은 해시테이블과 유사하지만 높은 성능을 위해 일반적인 해시테이블보다 나은 방법으로 객체를 구현한다.
자바, C++ 같은 클래스 기반 객체지향 프로그래밍 언어는, 객체를 생성하기 전에 이미 프로퍼티와 매서드가 정해져있고 그대로 객체를 생성한다. 객체가 생성된 이후에는 프로퍼티를 삭제하거나 추가할 수 없다.하지만, 자바스크립트는 클래스 없이 객체를 생성할 수 있고, 객체가 생성된 이후에도 동적으로 프로퍼티와 매서드를 추가할 수 있다.
이는 편리하지만 비효율적인 방식이다. 그래서 V8엔진은 프로퍼티에 접근하기위해 동적탐색 대신 "히든클래스"라는 방식을 사용해 성능을 보장한다.