[es6]var, let, const
같은 이름의 변수 선언
var는 너그럽다
let과 const는 엄격하다
규모가 큰 코드에서 버그 방지할 수 있는 특징
호이스팅
변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것을 의미
변수가 함수내에서 정의되었을 경우 선언이 함수의 최상위로
함수 바깥에서 정의되었을 경우 전역 컨텍스트의 최상위로 변경
변수의 선언이 초기화나 할당시에 발생하는 것이 아닌, 최상위로 호이스팅 된다!
let 과 const
블록
변수의 유효범위. var의 경우 function-scope라고 한다. 유효 범위가 함수 단위라는 말
let과 const는 block-scope. 유효범위가 블록 즉 {}로 감싸지는 범위
let과 const는 적절한 관계
const
원시형(primitive : string, number, boolean, null, undefined)에서 const는 상수로 동작
재할당할 경우 에러 발생
let
값의 변경이 있는 경우
참조형(array, object, function)의 경우 const로 선언하는 것이 바람직.
참조형은 const 선언하더라도 멤버 값 조작 가능
```javascript
const foo = [0,1];
const bar = foo;
foo.push(2);
bar[0] = 10;
console.log(foo, bar); // [10,1,2], [10,1,2]
```
위의 결과를 보다시피 const bar = foo
의 선언으로 bar는 foo를 참조
한다. 참조가 아니라 값을 복사하는 경우에는 array는 ...
연산자를 사용, object는 assign()
을 사용
summary
ES6 에서는 var를 지양하고 let과 const사용하자
원시형애서 변수는 let, 상수는 const
참조형은 const로 선언
Last updated
Was this helpful?