KnP House for Daily

[ES6] let 과 const 에 대해 본문

Web/ES6

[ES6] let 과 const 에 대해

K.ung 2016.06.13 20:53

[let 과 const]

1) 생긴 이유

- es5 이전에 javascript의 var의 scope는 function단위 였다. 그래서 function안에 중복된 var가 호이스팅으로 인해 충돌을 나는 경우가 발생하거나, 추가된 콜백함수에 중복된 변수의 선언으로 인한 충돌이 발생한다.(호이스팅 때문에 상단으로 끌어올려짐) 

그리고 망할 클로저를 사용해야 하는 경우가 있는데 그런 이유로 인해 var의 scope는 굉장히 까다롭다(아래 같은 경우임)



(4) let let 과같이 반복 사용하면 SyntaxError 임

[let 키워드]

- 변수 범위 : {} <- 블록 단위로 scope를 결정

- 특성

 (1) 글로벌 let은  window객체에서 접근이 안된다(글로벌이아님)

 (2) for(let x ..) {  } 에서 let x는 매 순회할 때마다 새롭게 갱신되어진다.(바인딩)  마치 클로저를 사용하여 서로다른 let x를 참조하여 scope chain에 보관하는것 과 같은 효과

 (3) 기존 var의 호이스팅이 완벽하지 않기 때문에 선언전 참조는 안됀다 (referenceError)  변수가 존재는 하지만 초기화가 되지않은 상태로 존재하게 된다. (uninitialized 상태값이됨)



 (4) let let 과같이 반복 사용하면 SyntaxError 임


[const 키워드]

  - let과 차이점(한가지만 빼고 똑같음)

-> const로 선언한 변수는 값 할당을 못한다.선언 시점만 가능, but 선언 시점에 값을 할당안해도 에러

- 특성

 (1) 블록단위 scope

 (2) 재할당 및 재선언 불가

 (3) const는 객체 or 변수등의 주소를 참조하는 것이기 때문에 실제 참조하는 것이 object, array, 등과 같은 형식이면, 내부 object , array의 속성은 변경이 가능하다.

 (4) 그래서 object, array, map 등과 같은곳에 사용하면 된다

'Web > ES6' 카테고리의 다른 글

[ES6] destructing assignment  (0) 2016.06.14
[ES6] rest parameter  (0) 2016.06.14
[ES6] let 과 const 에 대해  (0) 2016.06.13
[ES6] Arrow function 으로 map, promise 사용  (0) 2016.06.11
[ES6] Arrwo function Depth  (0) 2016.06.11
[ES6] Arrow function Basic Syntax  (0) 2016.06.11
0 Comments
댓글쓰기 폼