티스토리 뷰
발생일: 2015.05.11
키워드: const
내용:
ES6에는 읽기 전용의 변수를 선언하는 용도로 `const` 키워드가 추가되었다.
`let`과 마찬가지로 블럭 스콥으로 동작한다.
아래 코드를 보면 `const`의 동작 방식을 이해할 수 있다.
// 읽기 전용으로 정의한다.
const foo = 'foo';
foo = 'bar'; //-> 타입 에러가 발생한다. (Uncaught TypeError: Assignment to constant variable.)
// 블럭 스콥으로 동작한다.
(function () {
const foo = 'outside';
if (true) {
const foo = 'inside';
console.log(foo); //-> 'inside'
}
console.log(foo); //-> 'outside'
})();
// 배열이나 객체의 항목을 변경하는 것은 허용된다.
const list = [1, 2, 3];
list[0] = 4;
console.log(list); //-> [4, 2, 3]
// 상수를 정의할 목적으로, const 를 사용해 객체로 정의하는 건 큰 의미가 없다.
const obj = {
foo: 'foo'
};
obj.foo = 'bar';
console.log(obj.foo); //-> 'bar'
호환성 테이블에서 크롬은 '?'로 표시되어 있는데, `const`의 동작 방식이 Strict Mode 여부에 따라 다르기 때문인 것으로 보인다.
크롬에서는, Strict Mode 가 아닌 경우 `const` 로 변수 선언이 가능하지만, 변경할 수 있다.
(function () {
const foo = 'foo';
foo = 'bar';
foo; //-> 'bar';
}());
(function () {
'use strict';
const foo = 'foo';
foo = 'bar'; //-> 타입 에러
}());
반응형
댓글
공지사항