TS, JS에서 this 는 함수가 호출되는 방식에 따라 동적으로 결정된다.
좀더 자세히 알아보고 싶어서 TS로 직접 코드를 짜며 실험해봤다.
이 글은 2023년 8월 11일 Node 20.5.0 버전, TS 5.1.6 버전 기준으로 작성된 글이다.
개발 환경에 따라 결과가 달라질 수 있으니 참고만 하길 바란다.
function 키워드로 선언된 함수
함수 선언문, 함수 표현식에는 function 키워드를 사용한다. function 키워드로 선언된 함수는 this 를 언제든지 새로 바인딩할 수 있다. call, apply, bind 메서드를 사용하여 this 를 새로 바인딩할 수 있다.
화살표 함수
화살표 함수는 정의된 시점의 상위 스코프의 this 를 그대로 물려받는다.
따라서 화살표 함수는 call, apply, bind 메서드를 사용하여 this 를 새로 바인딩할 수 없다.
단, 상위 스코프의 this 가 바뀐다면 이를 참조하는 화살표 함수의 this 도 바뀐다.