변수의 유효범위를 일컫는 스코프는 es6를 기준으로 나뉜다.
es6 이전 -> 함수 스코프
es6 이후 -> 블럭 스코프
함수에서도 function() {}
중괄호가 있으니 무슨 말인지 잘 이해하지 못하다가 Poiemaweb의 글을 보고 이해하게 되어 기록으로 남긴다.
아래코드는 Poiemaweb의 예시를 가져왔습니다.
var x = 0;
{
var x = 1;
console.log(x); // 1
}
console.log(x); // 1
x
의 스코프는 중괄호가 아닌 함수단위이므로, 변수를 감싸고 있는 중괄호는 의미가 없다.
let y = 0;
{
let y = 1;
console.log(y); // 1
}
console.log(y); // 0
y
의 경우 es6문법인 let
으로 선언되었기 때문에 변수의 유효범위가 블럭으로 잡히고, 중괄호 안에서 선언, 할당된 변수는 전역변수y
에 아무런 영향을 주지 못한다.