JavaScript/모던자바스크립트 딥다이브

[딥다이브] 13장 스코프

스코프란 ?

모든 식별자( 변수명, 함수명, 클래스명  등. ) 자신이 선언된 위치에 의해 다른코드가 식별자 자신을 참조할 수 있는 유효범위

즉 , 식별자가 유효한 범위 이다 

 

@@ 코드의 문맥과환경

렉시컬환경 :  코드가 어디서 실행되며 주변에 어떤 코드가 있는지  

즉 , 코드의 문맥은 렉시컬 환경으로 이루어진다.

이를 구현한것이 실행컨텍스트 이며 , 모든코드는 실행컨텍스트에서 평가되고 실행된다.

 

스코프체인 : 스코프가 계층적으로 연결된것 

블록레벨 스코프  : if , for ,while ,try/catch 등 ..

함수레벨 스코프  : var 로선언된 변수

 

js엔진은 시작스코프 (변수를 참조하는 코드의 스코프)  - > 상위스코프 방향으로 이동하며 변수를 검색한다.

즉 함수를 어디서 정의했는지를에 따라 상위스코프를 결정하게된다.  이를 렉시컬 스코프 or 정적스코프라한다.