오늘의하루

[Javascript] Scope Chain 알아보기 본문

코딩공부

[Javascript] Scope Chain 알아보기

오늘의하루_master 2022. 5. 16. 09:38
const x = "x"; // <---- 변수 x (중복으로 보이지만 아래에서 알아보자.)
function c() {
  const y = "y";
  console.log("c");
}

function a() {
  const x = "xx"; // <---- 변수 x (중복으로 보이지만 아래에서 알아보자.)
  console.log("a");
  function b() {
    const z = "z";
    console.log("b");
    c();
  }
  b();
}

a(); // a,b,c
c(); // c

Scope Chain은 최상단부터 선언을 정리해보면 쉽게 알아볼 수 있습니다.

선언문 정리

순서 선언 선언 선언
Anonymous const x function c function a
function c const y    
function a const x function b  
function b const z    

퀴즈

function c에서 b()를 하면 어떻게 될까요?

과정 알아보기

질의 : function c 안에 function b의 선언이 있나요?

결과 : 없다.

이동 : function c의 부모로 이동 (Anonymous)

질의 : Anonymous에 function b의 선언이 있나요?

결과 : 없다.

최종 결과 : 호출할 수 없다.

Error 메시지 : b is not defined


변수 x는 중복일까?

위에서 작성했던 선언문 정리를 보게 되면 중복인지 아닌지 알 수 있다.

같은 scop에 중복이 있다면 오류가 발생하지만 다른 scope에 똑같은 변수가 있어도 별개이기 때문에 오류가 발생하지 않는다.

Comments