[JS] 렉시컬 스코프

소연·2024년 1월 25일

일러두기

본 글은 ‘모던 자바스크립트 Deep Dive’ 13장, ‘스코프’를 참고하여 작성되었습니다.

렉시컬 스코프 예제 분석하기

var x = 1; // 1. 렉시컬 스코프에 등록

function foo(){ // 2. 렉시컬 스코프에 등록
	var x = 10;
	bar();
}

function bar(){ // 3. 렉시컬 스코프에 등록
	console.log(x);
}

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

스코프의 결정방식

동적 스코프

함수를 어디서 호출 했는지에 따라 상위 스코프를 결정한다.

정적 스코프 / 렉시컬 스코프

함수를 어디서 정의했는지에 따라 상위 스코프를 결정한다

자바스크립트의 스코프 결정 방식!

→ 선언한 함수, 변수들의 렉시컬 스코프가 결정되는 것은 런타임 이전이다.

스코프 체인에 의한 변수 검색

상위 스코프에서 유효한 변수는 하위 스코프에서 자유롭게 참조할 수 있지만
하위스코프에서 유효한 변수를 상위스코프에서는 참조할 수 없기 때문이다.

따라서 function bar는 항상 var x = 1만 참조한다.

0개의 댓글