Web Dev/1. JS 문법 관련
블록 스코프와 지역스코프
hYhY1234
2021. 3. 28. 16:37
728x90
function test() {
for (var i = 0; i < 10; i++) { // var는 블록스코프를 인정하지 않아서 local(지역스코프에 포함)
(function () {
var v = i;
setTimeout(() => console.log(v), 100);
})();
for (let i = 0; i < 10; i++) { // let 키워드는 블록스코프 단위로 돌아가기때문에 block스코프에 포함
console.log("i", i);
}
}
}
test();
스코프는 식별자가 유효한 범위를 말한다
- var키워드는 함수가 실행되면서 생성된 실행컨텍스트의 지역스코프에 등록되고,
- let, const는 블록 스코프를 단위로 동작해서 블록 내에 있을때는 블록스코프에 등록이된다. 아니면 Local스코프에서 등록된다.
이 스코프는 모두다 렉시컬 스코프를 따르기때문에 함수가 어디에서 정의되어있는지에 따라 상위 스코프가 정해진다. 즉, 스코프 체인은 함수가 정의되었을때의 lexicalEnvironment를 참조한다