Scope(스코프) 란?
자신이 선언된 위치에 의해 다른 코드가 자신을 참조할 수 있는 유효 범위
(출처 모던 자바스크립트 Deep Dive)
var
- var는 함수 레벨 스코프이다.
- 함수 외부에서 var 키워드로 선언한 변수는 모두 전역 변수가 된다.
function func() {
if (true) {
var a = 'a';
console.log(a); // a
}
console.log(a); // a
}
func();
console.log(a) // a is not defined
let, const
- let, const는 블록 레벨 스코프이다.
function func() {
if (true) {
let a = 'a';
console.log(a); // a
}
console.log(a); // a is not defined
}
func();