스코프

fe_sw·2022년 7월 29일
0

Javascript

목록 보기
2/22
post-thumbnail

스코프는 유효 범위라는 뜻으로, 식별자(변수)가 유효한 범위를 말합니다.
자바스크립트 엔진은 스코프를 통해 어떤 변수를 참조해야 할 것인지 결정한다.

특징

  • 안쪽 스코프에서 바깥쪽 스코프로 접근할 수 있지만 반대는 불가능하다.
  • 스코프는 중첩이 가능하다.
  • 지역 변수는 전역 변수보다 우선순위가 더 높다.
  • 전역 스코프와 지역 스코프로 크게 나뉜다.
  • 자바스크립트는 함수 레벨 스코프를 따른다

지역 스코프 , 전역 스코프

  • 전역 스코프:
    전역이란 코드의 가장 바깥영역을 말한다. 전역에 변수를 선언하면 전역 스코프를 갖는 전역 변수가 된다. 이 전역 변수는 어디서든 참조할 수 있다.

  • 지역 스코프:
    지역이란 함수내부를 말한다. 지역에 변수를 선언하면 지역 스코프를 갖는 지역 변수가 된다. 지역 변수는 자신의 스코프와 하위 지역 스코프에서 유효하다.


렉시컬 스코프

스코프의 또다른 특징으로, 상위 스코프를 결정하는 방법을 들 수 있다.
상위 스코프를 결정하는 방법엔 두가지가 있다.

  • 동적 스코프 : 함수를 어디서 호출 하였는지에 따라 상위 스코프를 결정
  • 함수를 어디서 선언 하였는지에 따라 상위 스코프를 결정(자바스크립트에서 사용)

자바스크립트는 렉시컬 스코프를 따르므로 함수를 선언한 시점에 상위 스코프가 결정된다.
함수를 어디에서 호출하였는지는 스코프 결정에 아무런 의미를 주지 않는다.

var x = 1;

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

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

foo(); // 1
bar(); // 1

위 예제의 함수 bar는 전역에 선언되었다.
따라서 함수 bar의 상위 스코프는 전역 스코프이고 위 예제는 전역 변수의 x의 값 1 을 두번 출력한다.


스코프 체인

스코프체인이란 실행중인 컨텍스트 안에서 변수의 유효범위가 있다는 것을 의미한다.
즉 스코프체인은 Identifiers(식별자)를 찾는 일련의 과정이라고 정의할 수 있다.

자바스크립트 엔진은 식별자를 찾을 때 일단 자신이 속한 스코프에서 찾고 그 스코프에 식별자가 없으면 상위 스코프에서 다시 찾아 나간다.

이 현상을 스코프 체인 이라고 하며 스코프가 중첩되어있는 모든 상황에서 발생한다.

var x = 1;

function foo(){
    console.log(x); // -> 현재 자신의 스코프(foo 함수 내부)에 x가 없지만 상위 스코프인 전역에서 x를 찾는다.
}

console.log(x); // 1
foo(); // 1

0개의 댓글