Miyeon

렉시컬 스코프

2021-12-21JS

렉시컬 스코프의 정의

자바스크립트는 렉시컬 스코프(정적 스코프)를 따른다.
함수 정의가 평가되는 시점에 함수의 상위 스코프가 결정된다.
함수를 어디서 호출했는지는 상위 스코프에 어떠한 영향을 주지 않는다.

예문을 살펴보자

var x = 1;

function foo() {
  var x = 10;
  bar();
}

function bar() {
  console.log(x);
}

foo(); // 1
bar(); // 1

어떻게 함수는 자신의 상위 스코프를 기억할 수 있을까?

1)) 함수 선언문으로 정의된 bar 함수는 전역 코드가 실행되기 전에 먼저 평가되어 함수 객체를 생성한다.
2)) 이때 bar 함수 객체는 자신이 정의된 스코프(= 전역 스코프)를 기억한다.
3)) bar 함수가 호출된 곳이 어디인지 관계없이 언제나 자신이 기억하고 있는 전역 스코프를 상위 스코프로 사용한다.

요약

렉시컬 스코프란?

  • 함수가 정의될 때 함수의 상위 스코프를 결정하는 걸 뜻한다.
  • 렉시컬 스코프는 클로저와 관련이 있다.