스코프 갖다 뽀개기

date
Jan 7, 2022
slug
1
status
Published
tags
Dev
Js
summary
JS의 연결고리 스코프를 알아보자
type
Post
속성
let, const ⇒ 블록 레벨 스코프
var ⇒ 렉시컬 레벨 스코프

스코프 체인이란?

자바스크립트 엔진은 식별자를 찾을 때 일단 자신이 속한 스코프에서 찾고 그 스코프에 식별자가 없으면 상위 스코프에서 다시 찾아 나간다. 이 현상을 스코프 체인 이라고 하며 스코프가 중첩되어있는 모든 상황에서 발생한다.
→ 해당 현상은 실행 컨텍스트 과정에 평가되고 실행된다.

블록 레벨 스코프

  • 함수 밖에서 선언
    • 함수 스코프 변수처럼 전역 접근 가능
  • 함수 안에서 선언
    • 자신을 정의한 블록과 하위 블록에서만 접근 가능
  • 자신이 선언된 곳과 가장 가까운 블록을 유효 범위로 가진다

렉시컬 레벨 스코프

  • 함수가 중첩되어 있을 때 스코프 체인으로 인해 내부 함수에 찾는 식별자가 없다면 상위 스코프에서 식별자를 찾아 나선다
 

참고할 것

  • var ⇒ 재선언과 재할당이 모두 가능함
  • let ⇒ 재할당만 가능함
  • const ⇒ 재선언과 재할당이 모두 불가능함
 
MDN에서는 스코프를 "현재 실행 컨텍스트"라고 정의한다
 
 
아래 예제를 한번 보도록 하자
var x = 1;

function foo() {
	var x = 10;
	bar();
}

function bar() {
	console.log(x);
}

foo(); // 1
bar(); // 1
자바스크립트는 우선 렉시컬 스코프를 따른다. 즉, 함수를 어디서 호출했는지가 아닌 함수를 어디서 정의했는지에 따라 상위스코프를 결정한다. 그리하여 함수가 호출된 위치는 상위 스코프 결정에 어떠한 영향도 주지 않는다. → 함수의 상위 스코프는 언제나 자신이 정의된 위치를 기준으로한 스코프라는 것이다.

© artvelop 2021 - 2025