상위 scope
, 함수가 정의된 위치
, 함수가 실행되는 위치
먼저 자바스크립트의 함수에서 상위 scope를 결정하는 방식은 lexical scope입니다. lexical scope는 함수가 정의된 위치에 따라서 함수의 상위 scope를 결정합니다. 그래서 이 방식을 static scope(정적 스코프)라고도 부릅니다. 반면, dynamic scope는 함수가 실행되는 위치에 따라서 함수의 상위 스코프를 결정합니다.
let x = 1;
function foo() {
let x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); // 1
bar(); // 1