참조 대상이 되는 식별자(변수, 함수 등)를 찾아내기 위한 규칙
코드 전역에서 정의된 식별자는 코드 어디에서든 참조할 수 있다.
var
키워드로 선언한 전역 변수는 전역 객체(Global Object) window
의 프로퍼티이다.
// a는 이제 코드 어디에서든 참조할 수 있다
var a = 1;
함수 코드 블록이 만든 스코프로 함수 자신과 하위 함수에서만 참조할 수 있다.
지역 스코프(Local Scope)라고도 한다.
하지만 다음과 같은 문제점이 있다
function f() {
var v = 'local'
console.log(v); // "local"
}
console.log(v); // "v" is not defined
ES6에서 추가된 let
, const
변수를 사용하면 블록 스코프를 사용할 수 있다.
var x = 0;
{
var x = 1;
console.log(x); // 1
}
console.log(x); // 1
let y = 0;
{
let y = 1;
console.log(y); // 1
}
console.log(y); // 0
스코프에서 식별자를 찾아내기 위한 과정
자바스크립트는 렉시컬 스코핑을 기반으로 스코프 체인이 형성된다.
렉시컬 스코프 : 함수가 정의된 것을 기준으로 스코프가 만들어지는 것
자세한 내용은 Environment Record 참조 ㅎ