13장 스코프 (항주님 파트)

처음 듣는 용어가 많이 나와서 처음에는 당황했지만 사실 내용을 보면 이미 알고 있는 것이었다.

잘 기억해두기 위해 한번 정리해봤다.

스코프체인

스코프체인은 결국 이런 것이다.

나는 지금 내 방에서 학교 과제를 하려고 한다. 그런데 가방에 교과서가 없다! 분명히 학교에서 가져왔는데 말이다...

가방을 아무리 찾아봐도 책이 안보이면 나는 교과서를 찾기 위해 내 방 여기저기를 찾아다닐 것이다.(책상 위, 침대 위 등...)

만약 그래도 못찾으면 방에서 나와 다른 방을 찾을 것이다...(거실 소파 위.. 화장실 ㅋㅋ 등)

다른 방에서도 못찾으면 "아.. 내가 학교에 놓고 왔나보다..."하고 학교까지 교과서를 찾으러 갈 수도 있다.

스코프체인은 결국 우선 내가 있는 곳에서 원하는 것을 찾으려고 하고 만약 없으면 밖으로 나와서 점점 멀리까지 나와서 찾는 것을 말한다. (지역 스코프 → 전역 스코프로 이동)

위 내용을 이해한 다음, 아래 코드를 보면 너무나 당연한 것처럼 느껴진다.

function foo() {
  console.log('global');
}

function bar() {
  function foo() {
    console.log('local');
  }
  foo(); // local
}

bar();

foo(); // global

함수 레벨 스코프

평소에 let, const만 쓰는 나에게 이래 코드는 너무나 충격적이었다...

var x = 1;

if(true) {
  var x = 10;
}

console.log(x); // 10

var는 함수의 코드 블록만을 지역 스코프로 인정한다..

그래서 이 코드에서 var x = 10은 지역 변수가 아니라 전역 변수이다...😱😱😱😱😱😱