변수 vs 상수
변수와 상수는 값의 재할당 가능 여부에서 차이가 있다.
- 변수는 값을 재할당할 수 있다.
- 상수는 값을 재할당할 수 없다.
💡 재할당
재할당은 기존에 변수에 저장되어있던 값을 버리고 새로운 값을 저장하는 것이다.
원시 값 vs 객체
자바스크립트가 제공하는 7가지 데이터 타입은 크게 원시 타입과 객체 타입으로 구분할 수 있다. 원시 타입과 객체 타입은 크게 두 가지 측면에서 다르다.
-
저장되는 값
- 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다.
- 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.
-
값 변경 가능 여부
- 원시 값은 변경 불가능한 값이기 때문에 값을 직접 변경할 수 없다. 따라서 변수 값을 변경하기 위해 원시 값을 재할당하면 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경한다. 값의 이러한 특성을 불변성이라 한다.
- 객체를 할당한 변수를 참조하면 메모리에 저장되어 있는 참조 값을 통해 실제 객체에 접근한다. 참조 값은 생성된 객체가 저장된 메모리 공간의 주소, 그 자체다. 객체를 할당한 변수는 재할당 없이 프로퍼티를 동적으로 추가하거나 삭제할 수 있고 프로퍼티 값을 갱신할 수도 있다.