[Javascript] 스코프(Scope)란?

SungWoo·2024년 8월 17일

자바스크립트 공부

목록 보기
7/42
post-thumbnail

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

스코프
: 식별자가 유효한 범위 혹은 식별자를 검색할 때 사용하는 규칙

1. 스코프의 종류(전역 & 지역)

  • 코드는 전역(global)과 지역(local)로 구분할 수 있다.
  • 전역 변수는 어디서든 참고할 수 있다.
  • 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다.

2. 스코프 체인

: 스코프가 함수의 중첩에 의해 계층적 구조를 갖는 것 or 스코프가 계층적으로 연결된 것

const x = 10;
const y = 20;

function outer() {
	const z = 30;
    
    function inner() {
    	const x = 15;
        console.log(x + y + z);
    }
    
    inner();
}

outer(); // 65

console.log(z); // ReferenceError: z is not defined

  • 변수를 참조할 때 자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프에서 시작하여 상위 스코프 방향으로 이동하며 선언된 변수를 검색(identifier resolution)한다.
  • 상위 스코프에서 유효한 변수는 하위 스코프에서 자유롭게 참조할 수 있지만, 하위 스코프에서 유효한 변수를 상위 스코프에서 참조할 수 없다.

(※ 참조: 모던 자바스크립트 Deep Dive - 이웅모 저)

profile
어제보다 더 나은

0개의 댓글