원시 값
변경 불가능한 값
원시 타입의 값은 변경 불가능한 값이다. (읽기전용) 변경 불가능 하다는 것은 변수가 아니라 값에 대한 진술이다.
원시 값 자체를 변경 할 수 없다는 것이지 변수 값을 변경 할 수 없다는 것은 아니다.
변수는 언제든지 재 할당을 통해 변수 값을 변경 할 수 있다.
변수의 상대 개념인 상수는 재할당이 금지된 변수를 말한다. 상수도 값을 저장하기 위한 메모리 공간이 필요하므로 변수라고 할 수 있다.
// const 키워드를 이용해 선언한 변수는 재할당이 금지된다. 상수는 재할당이 금지된 변수다.
const o = {};
// const 키워드를 사용해 선언한 변수에 할당한 원시 값(상수)은 변경할 수 없다.
// 하지만 const 키워드를 사용해 선언한 변수에 할당한 객체는 변경할 수 있다.
o.a = 1
console.log(o); // {a: 1}
원시 값은 변경 불가능한 값, 즉 읽기 전용 값이다. 원시 값은 어떤 일이 있어도 불변한다. 이러한 원시 값의 특성은 데이터의 신뢰성을 보장한다는 것이다.
원시 값을 할당한 변수에 새로운 원시 값을 재할당하면 메모리 공간에 저장되어 있는 재할당 이전의 원시 값을 변경하는 것이 아니라 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장한 후 변수는 새롭게 재할당한 원시 값을 가리킨다. (변수가 참조하던 메모리 공간의 주소가 바뀐다)
score → [undefind]
[ … ]
//값 할당
[undefind]
[ … ]
score → [ 80 ]
//값의 재할당
[undefind]
[ … ]
[ 80 ]
[ … ]
score → [ 90 ]
변수가 참조하던 메모리 공간의 주소가 변경된 이유는 변수에 할당된 원시 값이 변경 불가능한 값이기 때문에 주소 값이 바뀐다.
score → [undefind]
[ … ]
//값 할당
score → [undefind -> 80]
[ … ]
//값의 재할당
score → [80 -> 90]
[ … ]
변경 가능한 값이라면 변수에 새로운 원시 값을 재할당 했을 때, 변수가 가리키던 메모리 공간의 주소를 바꿀 필요없이 원시 값 자체를 변경한다. 그렇다면 변수가 참조하던 메모리 공간의 주소는 바뀌지 않는다.
하지만 원시 값은 변경 불가능하기 때문에 직접 값을 변경 할 수 없다.
따라서 변수 값을 변경 하기 위해 원시 값을 재할당하면 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경한다. 값의 이러한 특성을 불변성 이라고 한다.
불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없다.
'STUDY > JavaScript' 카테고리의 다른 글
모던 자바스크립트 | 전역 변수의 문제점 (0) | 2024.08.01 |
---|---|
모던 자바스크립트 | 스코프(scope) (0) | 2024.08.01 |
모던 자바스크립트 | 객체 리터럴 (0) | 2024.07.23 |
모던 자바스크립트 | 단축 평가 (0) | 2024.07.23 |
모던 자바스크립트 | 명시적 타입 변환 (0) | 2024.07.23 |
댓글