ES6 에서 변수 선언 let
돌딤
2018. 6. 20. 13:49
기존에 사용하던 var는 선언문의 생략 또는 중복된 변수명으로 선언이 가능하고 함수를 끌어올리는 것 등 가독성이 떨어졌다.
const ,let은 이런 점을 보완했다.
var는 함수 블록에서 스코프가 설정된다. 그 외 블록에서는 스코프가 설정되지 않는다.
* 스코프는 변수 또는 함수의 접근 가능한 범위를 의미한다.
1. var의 스코프 설정
1 2 3 4 5 6 | var a = 300; function f(){ var a = 600; console.log(a); // 여기서 a 의 값은 600 } console.log(a) // 여기서 a의 값은 300 | cs |
위의 예제를 보면 같은 변수 a 를 선언하고 있는데
함수 안에서 와 밖은 다른 스코프가 설정이 되어 값이 다른 걸 확인 할 수 있습니다.
2. var 블록에서 스코프
1 2 3 4 5 6 | var b = 300; if(a > 0){ var a = 600; console.log(a); // 여기서 a 의 값은 600 } console.log(a) // 여기서 a의 값은 600 | cs |
함수를 블록으로 바꿔 보았는데 블록 안쪽에서 스코프가 설정되지 않았다. 밖 변수의 값이 600이 나온다. var는 함수 이외 블록에서 변수가 공유되어진다.
3. let은 블록 안쪽에서도 스코프 설정이 된다.
1 2 3 4 5 6 | let b = 300; if(a > 0){ let b = 600; console.log(a); // 여기서 a 의 값은 600 } console.log(a) // 여기서 a의 값은 300 | cs |
위 예제를 보면 var와 는 달리 let은 블록에서도 스코프 설정이 되는 걸 볼 수 있다.
이외에도 var는 반복문 안에서 변수가 공유되었는데
let으로 개선하였다. 그리고 같은 스코프 내에서 변수 중복 선언을 하면 신텍스 에러가 난다.
1 2 3 4 | function Test(){ let a = 10; let a = 20; // syntaxerror 발생 } | cs |
위 예제를 보면 var 스코프 안에서 변수 중복 선언 시 이전에 선언된 변수가 덮혀 지는데 , let은 중복 선언을 허용하지 않는다.이외
에도 함수 끌어올림이 되지 않는다.
'JavaScript > Es6' 카테고리의 다른 글
[ES6] Module (0) | 2018.10.04 |
---|---|
[ES6] Promise (0) | 2018.10.03 |
[ES6] For of 문 이터러블 규약 (0) | 2018.09.02 |