[기술면접/JS] scope chain (스코프 체인)

강민혁·2023년 3월 3일
0

기술면접 | JS

목록 보기
10/17

JS에서 scope chain (스코프 체인)에 대해 설명하세요

Keyword

중첩 함수, 함수의 중첩, 지역 스코프, 계층적 구조, 식별자, 검색, 렉시컬 환경


Script

JS에서는 nested function(중첩 함수)와 같이 함수의 중첩이 가능합니다. 즉, 함수의 local scope(지역 스코프)도 중첩이 가능하다는 의미입니다.

그래서 이 scope들이 함수의 중첩에 의해 계층적 구조를 갖게 되는데, 이 계층들이 연결된 것을 scope chain(스코프 체인)이라고 합니다.

만약 JS 엔진이 식별자를 참조하려고 할때, 작업을 요청한 코드의 scope에서 시작하여 상위 scope 방향으로 이동하면서, 변수를 검색(identifier resolution)합니다.

JS 엔진은 실제로 Lexical Environment(렉시컬 환경)을 생성하면서, 변수가 선언될 때마다 렉시컬 환경에 식별자를 등록하고, 할당이 발생하면 해당 값을 변경하기도 하면서 구성됩니다.


Additional

scope

모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 따라서 다른 코드에서 자신을 참조할 수 있는 여부에 대한 유효범위가 결정된다. 이 유효범위를 scope라고 한다.

global scope, local scope

코드 가장 바깥 영역을 global이라고 하며, global은 global scope를 만든다. 이 scope 범위에서 선언되는 변수는 global variable이 된다.

함수 내부 영역을 local이라고 하며, 마찬가지로 local은 local scope를 만들고, 이 scope 내에서 선언되는 변수는 local variable이 된다.

nested function(중첩 함수), outer function(외부 함수)

JS에서 함수는 global에서 정의할 수도 있고, 함수 내부에서 정의할 수도 있다. 함수 내부에서 함수가 정의된 경우는 nested function이 생성된다고 한다. 그리고 이 nested function을 포함하는 함수를 outer function이라고 한다.


Reference

BOOK - modern javascript deep dive

[JavaScript] 스코프, 스코프 체인, 클로저

profile
with programming

0개의 댓글