모든 식별자(변수, 함수, 클래스 일므 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위가 결정되고 이를 스코프라고 한다. 즉 스코프는 식별자가 유효한 범위
var x = 'global';
function foo(){
var x = 'local';
console.log(x);
}
foo();
console.log(x);
var키워드로 선언된 변수는 같은 스코프 내에 중복 선언이 허용된다. 이는 의도치 않게 변수가 재할당되는 부작용을 일으키기도 한다.
var
function foo(){
var x= 1;
var x= 2;
console.log(x); //2
}
foo();
let, const키워드로 선언된 변수는 같은 스코프 내에서 중복 허용 x
let, const
function foo(){
let x = 1;
let x = 2; //SyntaxError
}
foo();
let은 for문 나가면 끝이고 var은 블록스코프 무시
지역스코프: 지역이란 함수 몸체 내부를 뜻하며 지역 변수는 자신이 선언된 지역과 하위지역(중첩함수)에서만 참조할 수 있다.
전역스코프: 지역스코프 바깥쪽을 뜻하며 안쪽 스코프의 내용을 참조할 수 있다.
지역변수는 전역변수보다 높은 우선순위를가짐
window 객체