[Javascript] 스코프(Scope)

KIM KYUBIN·2022년 3월 18일
0

Javascript

목록 보기
2/3

스코프(Scope)란?

📖 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다.
➡ 식별자가 유효한 범위

스코프의 종류

전역과 전역 스코프

📖 전역(global) : 코드의 가장 바깥 영역

➡ 전역에 변수를 선언하면 전역 스코프를 갖는 전역 변수가 된다.

💡 전역 변수는 어디서든지 참조할 수 있다.

지역과 지역 스코프

📖 지역(local) : 함수 몸체 내부

➡ 지역에 변수를 선언하면 지역 스코프를 갖는 지역 변수가 된다.

💡 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다.

스코프 체인

📖 스코프는 함수의 중첩에 의해 계층적 구조를 가진다.

➡ 스코프가 계층적으로 연결된 것을 스코프 체인(scope chain)이라고 한다.

💡 변수를 참조할 때 자바스크립트 엔진은 scope chain을 통해 변수를 참조하는 코드의 scope에서 시작하여 상위 scope 방향으로 이동하며 선언된 변수를 검색한다.

➡ 상위 scope에서 유효한 변수는 하위 scope에서 자유롭게 참조할 수 있지만 하위 scope에서 유효한 변수를 상위 scope에서 참조할 수 없다.

함수 레벨 스코프

💡 local scope는 function에 의해서만 생성된다.

➡ 이러한 특성을 함수 레벨 스코프(function level scope)라 한다.

📖 var로 선언된 변수 : function level scope
let, const로 선언된 변수: block level scope

렉시컬 스코프

📖 동적 스코프(dynamic scope) : 함수를 어디서 호출했는지에 따라 함수의 상위 scope를 결정한다.

📖 렉시컬 스코프(lexical scope) : 함수를 어디서 정의했는지에 따라 함수의 상위 scope를 결정한다.

➡ 자바스크립트는 lexical scope를 따른다.

📕 참조 : 모던 자바스크립트 Deep Dive

profile
상상을 현실로 만들기 위해 노력하는 개발자

0개의 댓글