티스토리 뷰

Daylogs/Javascript

ES6: const

ohgyun 2015. 5. 11. 22:40
발생일: 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'; //-> 타입 에러
}());
반응형
댓글
공지사항