메뉴 닫기

[ES6]변수 선언

ES6(부르는 용어가.. ECMAScript 6라고 부르기도하고, ECMAScript 2015 , ES6 , 뭐 여튼) 에 대해 천천히 공부해보자

일단 내가 알던 Javascript 와 다른 첫번째는 변수 선언에 관한 키워드 이다

기존의 Javascript 는 var로 모든 것이 해결 되었다. var의 경우 중복선언 / 함수 scope 등의 특징을 가진다.

반면, let과 const 는 중복 선언이 불가능하고 Block-scope를 가진다(bracket 범위). 이런 특징 때문에 다른 언어들과 비교해서 Javascript 가 가졋던 문제점(문제점인지 장점인지 알수 없으나.. Hoisting에 따른 중구 난방 변수 선언이나 중복 선언 등)을 해결 할 수 있게 된거 같다.

특히 변수의 범위가  블럭 scope이기 때문에 기존의 Javascript 에 익숙한 개발자들은 조심해야할거 같다.

Const 같은 경우에 좀 특별한데.. 일단 keyword가 생긴걸로만 봐서는 상수(immutable)이다. 실제로 ES6스팩 document(http://es6-features.org/#Constants)에도 immutable라고 표현되어 있는데, 이게 원시형 데이터를 할당하면 변경 불가능인데 참조형 데이터는 또 변경이 가능하다.(이러면 안되는거 아닌가) 또 이게 크롬의 경우 Strict Mode 일 경우 값을 변경하면 에러 난다고 한다. (일괄성에 대한 문제를 해결하려고 하는거 아니였나?)

var와 또 다른 let의 차이점은 loop index에서 찾을 수 있다.

var는 index의 경우 할당된 변수 하나에 값을 변경 시켜 나가지만 let 을 loop index로 사용할 경우 각기다른 변수가 생긴다. (loop가 메우 큰경우 메모리 문제가 발생할 수 있는 부분 아닌가?)

결국 var보다는 let과 const의 특징을 이해하고 바르게 사용하는 것이 중요할텐데 실제 코드에서는 let보다는 const가 많이 사용된다고 한다.

참고 : http://blog.javarouka.me/2016/03/es2015-var-const-let.html ,

http://blog.nekoromancer.kr/2016/01/26/es6-var-let-%EA%B7%B8%EB%A6%AC%EA%B3%A0-const/