유블로그

자바스크립트 스코프 체인 본문

JavaScript & jQuery

자바스크립트 스코프 체인

yujeong kang 2021. 6. 21. 01:21

변수와 함수는 유효범위가 있다.

자바스크립트는 C 와 달리 for 문이나 if 문의 { } 이 유효범위가 없다.

함수만이 유효범위의 단위!

 

이 유효범위는 [[scope]] 프로퍼티로 각 함수 객체 내에서 연결 리스트 형식으로 관리된다.

이것을 스코프 체인이라고 한다.

 

var var1 = 1;
var var2 = 2;
function func() {
	var var1 = 10;
    var var2 = 20;
    console.log(var1);	// 10
    console.log(var2);	// 20
}

func();
console.log(var1);	// 1
console.log(var2);	// 2

위 코드를 실행하면 전역 실행 컨텍스트가 만들어지고 func() 함수 객체가 만들어진다.

func()는 전역 실행 컨텍스트 내에 있기 때문에 func 함수 객체의 [[scope]]는 전역 변수 객체가 된다.

func 실행 컨텍스트가 [[scope]] 프로퍼티를 만들 때는 

일단 자신이 속한 실행 컨텍스트의 [[scope]] 프로퍼티를 복사하고 현재 생성된 변수 객체를 스코프 체인 맨 앞에 추가한다.

이 스코프 체인으로 변수(식별자)를 탐색하는데

var1, var2 를 사용할 때 스코프체인을 따라 먼저 func 를 검사하고, 없으면 스코프 체인을 따라가 다음 객체를 탐색할 것이다.