하루 30분 모던 자바스크립트 딥 다이브. 스코프

스코프는 프로그래밍 언어의 기본 개념. 식별자 자신을 참조할 수 있는 유효한 범위

스코프 체인

  1. 중첩 함수와 같이 지역 스코프도 중첩될 수 있다. (지역이 곧 함수 몸체를 말하고, 지역은 지역 스코프를 만들기 때문)
  2. 모든 스코프는 하나의 계층적 구조로 연결 되어있다.
  3. 최상위 스코프는 전역 스코프다.
  4. 참조하는 코드의 스코프에서 시작하여 상위 스코ㅡ로 이동하면서 선언된 변수를 검색한다.
  5. 스코프 체인은 실행 컨텍스트의 렉시컬 환경을 단방향으로 연결한 것이다. 전역 렉시컬 환경은 코드가 로드되면 곧바로 생성되고 함수의 렉시컬 환경은 함수가 호출되면 곧바로 생성된다.
  6. 함수도 식별자에 할당되기 때문에 변수를 검색할 때 사용하는 규칙 보다는 식별자를 검색하는 규칙이 좀 더 적합

함수 레벨 스코프

  1. 대부분의 프로그래밍 언어는 블록 레벨 스코프
  2. 자바 스크립트는 함수 레벨 스코프

렉시컬 스코프

var x = 1;

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

function bar() {
	console.log(x);
}
  1. 위 예제의 출력은 bar 함수의 스코프에 따라 결정된다.
  2. 함수를 어디서 호출 했는지에 따라 스코프를 결정하는 동적 스코프
  3. 함수를 어디서 정의 했는지에 따라 스코프를 결정하는 정적 스코프 (렉시컬 스코프)
  4. 자바스크립트를 비롯한 대부분의 프로그래밍 언어는 정적 스코프를 따른다.