Scope [Deep Dive]

tjswo·2022년 5월 28일
0

DeepDive

목록 보기
2/3
post-thumbnail

Scope

유효범위, 식별자가 유요한 범위, JS 엔진이 식별자를 검색할 때 사용하는 규칙

var x = 'globa';
function foo(){
	var x = 'local';
    console.log(x);
}
foo();
cnosole.log(x);

Js 엔진은 이름이 같은 두 개의 변수 중에서 어던 변수를 참조해야 할 것인지를 코드의 문맥을 고려하여 결정한다.

Scope Chain

스코프가 함수의 중첩에 의해 계층적 구조를 갖는다.
변수를 참조할 때 Js 엔진은 Scope Chain을 통해 변수를 참조하는 코드의 스코프에서 시작하여 상위 스코프로 방향을 이동하며 선언된 변수를 검색한다.

Function Level Scope

코드 블록이 지역 스코프를 만든다.
var 키워드 변수 : 오로지 함수의 코드 블록(함수 몸체) 만을 지역 스코프로 인정한다.

!!! Es6 에서 도입된 let, const 키워드는 블록 레벤 스코프를 지원한다


var x = 1;
function foo(){
	var x = 10;
    bar(); // 1)
}
function bar(){
	console.log(x); // 2)
}

1) Dynamic Scope

함수를 정의하는 시점에는 함수가 어디서 호출될지 알 수 없다. 함수가 호출되는 시점에 동적으로 상위 스코프 결정

2) Lexical/Static Scope

함수 정의가 평가 되는 시점에 상위 스코프가 정적으로 결정된다.

profile
다적자생존(다 적어야 산다)

0개의 댓글