몽땅뚝딱 개발자

[Javascript] 스코프(Scope) 본문

Development/Javascript

[Javascript] 스코프(Scope)

레오나르도 다빈츠 2021. 7. 7. 21:06

출처

 

자바스크립트 중고급: 근본 핵심 이해 - 인프런 | 강의

4개 강좌로 구성된 자바스크립트 바이블 강좌의 2번째 강좌입니다. 자바스크립트 엔진 이해를 통해 자바스크립트에 최적화된 프로그램을 개발할 수 있습니다. 자신 있게 시스템을 설계할 수 있

www.inflearn.com

 

 


 

🚀 스코프(Scope)

 

◽ 스코프의 목적

- scope란? 범위, 영역이라는 뜻

- 범위를 제한하여, 스코프에서 식별자를 해결하려는 것이다.

 

 식별자 해결(Identifier Resolution)

변수 이름, 함수 이름을 찾아 값을 구하는 것이 식별자 해결의 궁극적인 목적이다.

스코프는 식별자 해결을 위해 사용한다.

예를 들어 한국에서 '김철수'를 찾을 경우 동명이인이 굉장히 많을 것이다.

이럴 때 지역 이름으로, 구 단위로 좁혀나가 찾으면 찾기가 쉽다.

 

 스코프의 설정과 종류

엔진이 function을 만나면 FO를 생성하고 스코프를 설정한다.

설정한 FO의 내부 프로퍼티인 [[Scope]]에 스코프를 설정한다.

 

FO를 만드는 시점에 스코프가 결정되는 것을 '정적 스코프'라고 한다.

정적 스코프는 FO를 생성할 때 한번만 생성된다.

반면, 함수를 호출할 때 스코프를 결정하는 것을 '동적 스코프'라고 한다.

동적 스코프에서는 10,000번을 호출하게 되면 스코프도 동일한 횟수대로 만들게 된다.

 

그래서 정적 스코프가 더 효율적이라고 볼 수 있다.

이것이 자바 스크립트의 스코프 설정 메커니즘이다.

 

function book() {
    var point = 123;

    // get()의 범위는 book()안의 모든 곳이다.
    // 그래서 get()의 스코프에 있는 point 변수를 쉽게 찾을 수 있다.
    function get() {
        console.log(point);
    };
    get();
}

book();

 

 

'Development > Javascript' 카테고리의 다른 글

[Javascript/ES6+] 변수의 구분  (0) 2021.07.07
[Javascript] 호이스팅(Hoisting)  (0) 2021.07.07
[Javascript] Argument 처리  (0) 2021.07.07
[Javascript] 오버로딩(Overloading)  (0) 2021.07.07
[Javascript/ES6+] Arrow Function  (0) 2021.07.07
Comments