모든 식별자(변수, 함수, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정되며, 이를 스코프라고 한다.
var x = 'global';
function foo() {
var x = 'local';
// foo 함수 스코프에 있는 x 참조
console.log(x); // ①
}
foo();
// 전역 스코프에 있는 X 참조
console.log(x); // ②
<aside> 💡 var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언이 허용되지만, let이나 const 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용하지 않는다.
</aside>