
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
위 세 명제는 이해했습니다. 만약 그러면 콜백함수를 화살표함수로 정의한 경우에는 어떻게 되나요?
이를 알아보기위해 혼자서 아래와 같은 코드를 짜서 돌려봤습니다.
[1, 2, 3, 4, 5].forEach((x) => console.log(x, this));
// 화살표 함수로 콜백함수 정의
["a", "b", "c", "d", "e"].forEach(function (x) {console.log(x, this);});
// 일반 함수 선언문으로 콜백함수 정의
이를 node로 실행했더니 대충 아래와 같은 결과가 나오더라구요.
1 {}
2 {}
3 {}
4 {}
5 {}
a <ref *1> Object [global] { 어쩌구 저쩌구~~~}
b <ref *1> Object [global] { 어쩌구 저쩌구~~~}
c <ref *1> Object [global] { 어쩌구 저쩌구~~~}
d <ref *1> Object [global] { 어쩌구 저쩌구~~~}
e <ref *1> Object [global] { 어쩌구 저쩌구~~~}
f <ref *1> Object [global] { 어쩌구 저쩌구~~~}
일반 함수를 콜백함수로 갖는 a~f 케이스에서 this가 global, 즉 전역객체로 지정되어있는건 알겠으나,
화살표 함수를 콜백함수로 갖는 1~5 케이스가 왜 빈 객체를 this로 갖는지는 잘 모르겠습니다.
이해 도와주시면 감사하겠습니다.
