함수가 선언되었을 당시 주변 환경을 기억하는 것이다.
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo();
bar 함수가 실행되는 위치나 시점은 foo 함수 내부에서 foo 함수가 호출될 때 실행된다. 하지만 함수가 선언되었을 당시에 스코프가 형성되기 때문에 bar 함수의 상위 스코프는 전역 객체가 된다. 따라서 bar
함수 내부의 x 값은 스코프 체인에 따라 상위 스코프에서 찾게 되고 1을 출력하게 된다.
📌 스코프 체인이란 해당 코드의 유효 범위 안에 있는 변수를 정의하는 객체의 리스트이다.
자바스크립트에서 변수값을 찾으려고 할 때 스코프 체인에서 변수를 찾게 된다.
함수가 실행될 때마다 현재 실행되는 함수에 대한 정보를 모아놓은 객체이다.