본문으로 건너뛰기

this에 대해서 설명해주세요.

자바스크립트에서 this는 실행 컨텍스트가 생성될 때 함께 결정된다.

실행 컨텍스트는 함수를 호출할 때 생성되므로, 바꿔 말하면 this는 함수를 호출할 때 결정된다고 할 수 있다. 함수를 어떤 방식으로 호출하느냐에 따라 값이 달라지는 것이다.

전역 공간에서 this는 전역 객체를 가리킨다. 개념상 전역 컨텍스트를 생성하는 주체가 바로 전역 객체이기 때문이다. 전역 변수를 선언하면 자바스크립트 엔진은 이를 전역 객체의 프로퍼티로 할당한다. 변수이면서 객체의 프로퍼티이기도 한 셈이다.

자바스크립트의 모든 변수는 특정 객체의 프로퍼티로서 동작한다. 여기서 특정 객체란 바로 실행 컨텍스트의 LexicalEnvironment(L.E)이다. 실행 컨텍스트는 변수를 수집해서 L.E의 프로퍼티로 저장한다. 이후 어떤 변수를 호출하면 L.E를 조회해서 일치하는 프로퍼티가 있을 경우 그 값을 반환한다. 전역 컨텍스트의 경우 L.E는 전역 객체를 그대로 참조한다.

화살표 함수는 실행 컨텍스트 생성 시 this 바인딩하는 과정이 없다. 즉, 이 함수 내부에는 this가 아예 없으며, 접근하고자 하면 스코프 체인상 가장 가까운 this에 접근한다

Referecne

  • 코어 자바스크립트