this 와 lexical environment 의 결정

59INU·2022년 11월 15일
0

째끄만 공부

목록 보기
2/3

재활을 위한 기본서 학습 (이라고 쓰고 기술 면접 대비라고 읽는다)을 하다 보면 예전에 머리아프던 게 5ms 정도 만만하게 느껴지고 그렇지...

this는 함수를 호출할 때 결정된다.

  1. 최초에 전역에서 함수선언문을 통해 생성된 함수 sayName이 있다.
    sayName은 자신이 속한 유효 범위, this의 name 프로퍼티를 콘솔에 표시한다.

  2. 새로 생성한 리터럴 객체 obj에 메서드로 sayName을 할당한다.

  3. 전역에서 자유 함수로 호출한 sayName은 전역 변수 name을,
    객체 obj의 메서드로 호출한 sayName은 obj 프로퍼티 name을 표시한다.

  4. 함수가 객체의 매서드로 할당될 때 복제된 건 아닐까? 싶지만 두 함수는 동일한 함수 객체가 맞다.

그렇다면, this는 함수가 생성되는 선언 시점이 아닌 함수 본체가 실행되는 호출 시점에 정해진다.

렉시컬 환경은 함수가 선언될 때 결정된다

함수는 자신이 선언된 시점의 외부 환경을 기억한다. 클로저의 복습이다.

정리

렉시컬환경은 함수가 기억하는 자기 고향이다. 고향은 날 때 정해져 바뀌지 않는다.
this는 함수가 지금 현재 살고 있는 집이다. 이사가면 바뀌어야지.

코드 블록 예쁜거 많던데 맨날 이렇게 개발자도구 콘솔이나 스크린샷 찍고 있으면 안된다고 생각은 하고 있다. 예쓰예쓰...

profile
개랑 사는 개발자

0개의 댓글