자바스크립트는 const
키워드를 사용하여 변경불가한 컨테이너 공간을 만들 수 있습니다.
이 const
키워드를 사용하여 변수를 선언하거나 할당할 시 한 번 선언한 변수에 대하여 값을 재정의할 수 없습니다.
하지만
const
로 선언한 변수에 객체나 배열 컬렉션을 값으로 할당한다면 객체나 배열 요소에 대하여 자유롭게 값(요소)을 추가 및 삭제할 수 있습니다.
이것은 상수가 실제로는 배열에 대한 참조를 저장하기 때문에 발생하는 현상입니다.
배열에 무언가를 결합할 때 상수 값을 수정하는 것이 아니라 가리키는 배열을 수정하는 것입니다. 또한 객체를 상수에 할당하고 그 속성을 수정하려는 경우에도 마찬가지입니다.
요소를 수정할 수 없도록 배열 또는 객체를 고정하려면 Object.freeze
를 사용하여 해당 객체를 읽기 전용으로 만들 수 있습니다.
const user = { name: '홍진혁' }; // { name: '홍진혁' }
user.name = '홍진호'; // { name: '홍진호' }
delete user.name; // {}
user.name = '홍진혁' // { name: '홍진혁' }
user.job = 'cloud engineer'; // { name: '홍진혁', job: 'cloud engineer }
const arr = [ '홍진혁' ]; // ['홍진혁']
arr.push('홍진호'); // ['홍진혁', '홍진호']
arr.splice(0, 1); // ['홍진호