Modern JavaScript Deep Dive 스터디 - CH13 스코프
참고 자료: ⟪모던 자바스크립트 Deep Dive⟫"(이웅모 지음,위키북스, 2020)
var x = 1;
if (true) {
// var 키워드로 선언된 변수는 함수의 코드 블록(함수 몸체)만을 지역 스코프로 인정
// 함수 밖에서 var 키워드로 선언된 변수는 코드 블록 내에서 선언되었다 할지라도 모두 전역 변수 -> x는 전역 변수
// 이는 의도치 않게 변수 값이 변경되는 부작용을 발생시킬 수 있음.
var x = 10;
}
console.log(x); // 10
동적 스코프
함수가 호출되는 시점에 동적으로 상위 스코프를 결정
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); // 결과? -> 렉시컬 스코프: 10, 정적 스코프: 10
bar(); // 결과? -> 렉시컬 스코프: 1, 정적 스코프: 10