함수를 어디서 선언 했는지에 따라 상위 스코프를 결정!⭐
즉, 함수를 어디서 호출 했는지는 스코프의 결정에 아무런 영향을 끼치지 않는다.
자바스크립트는 Lexical Scope 를 따르며, >> 정적 스코프
Perl, Bash shell은 함수의 호출에 따라 상위 스코프가 정해지는 Dynamic Scope를 따른다. >> 동적 스코프
var x = 1;
function first() {
var x = 10;
second();
}
function second() {
console.log(x);
}
first(); //1
second(); //1
자바스크립트는 Lexical Scope 를 따르기 때문에 함수를 어디에서 호출했는지는 스코프 결정에 아무 영향을 끼치지 않는다.
따라서 second() 가 first() 안에서 호출된 것과 상관없이
second() 는 전역 범위(Global Scope)에 선언되어 있으므로
전역 범위(Global Scope)에 있는 변수 x의 값이 2번 출력된다.