일반 함수와 화살표 함수의 this 비교
this는 함수의 출생지가 아니라 호출 위치를 기준으로 결정되며, 화살표 함수는 상위 범위의 this를 그대로 사용한다.
| 상황 | 일반 함수 | 화살표 함수 | 선택 기준 |
|---|---|---|---|
| 객체 메서드 | 점 왼쪽 객체를 this로 받음 | 바깥 this를 캡처해 부적합 | 객체 상태를 읽어야 하면 일반 함수 |
| 이벤트 리스너 | 리스너를 단 요소가 this가 될 수 있음 | 컴포넌트/상위 this 유지 | DOM 요소가 필요한지 상태가 필요한지 |
| 콜백 | 호출자가 this를 바꿀 수 있음 | 상위 this 유지 | 콜백 안 this 혼란을 줄일 수 있는가 |
| 생성자 | new로 새 인스턴스 생성 | new 사용 불가 | 인스턴스가 필요하면 일반 함수/class |
| bind | 고정된 this 함수를 생성 | 대개 필요 없음 | 함수를 넘겨도 this를 유지해야 하는가 |
this 선택은 문법 취향이 아니라 호출자가 this를 정해야 하는 자리인지, 상위 this를 유지해야 하는 자리인지의 문제다.