스코프

스코프?

변수는 자신이 선언된 위치에 의해 자신이 유효한 범위인 스코프가 결정 됩니다

이러한 스코프는 자바스크립트 엔진이 식별자를 검색하는 규칙이라고도 말할 수 있습니다

이러한 규칙이 있기때문에 우리는,

  • 서로 다른 스코프에서 같은 변수명을 사용할 수 있습니다
  • 상위 스코프에서 유효한 변수는 하위 스코프에서 자유롭게 참조할 수 있지만 하위 스코프에서 유효란 변수를 상위 스코프에서 참조할 수 없습니다
function outer() {
  const name = 'outer heaeun';
  const food = 'pizza';

  console.log(name, age); // ReferenceError: age is not defined

  function inner() {
    const name = 'inner heaeun';
    const age = 20;

    console.log(name, age, food); // 'inner heaeun' 20 'pizza'
  }

  inner();
}

outer();

스코프체인?

스코프 블럭은 중첩될 수 있습니다. 이렇게 중첩된 스코프가 계층적으로 연결되어 있는 것을 스코프 체인이라고 합니다

자바스크립트 엔진은 스코프 체인을 따라 변수를 참조하는 코드의 스코프에서 시작하여 상위 스코프로 이동하면서 선언된 변수를 검색합니다

함수 레벨 스코프

함수의 코드 블록에 의해서 생성된 지역 스코프입니다. 함수 내부에서 선언된 변수는 함수 내부에서만 참조할 수 있습니다

블록 레벨 스코프

코드 블록에 의해서 생성된 지역 스코프입니다. 코드 블록 내부에서 선언된 변수는 블록 내부에서만 참조할 수 있습니다


Written by@Heaeun
코드리뷰, TDD, 함께 자라기를 지향하는 프론트엔드 개발자입니다

GitHub