커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
화살표 함수와 콜백함수 관련
JavaScript 문법 종합반 v0
3주차
북마크
윤*준
댓글
7
추천
0
조회수
27
조회수
27
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


  1. 화살표함수로 정의된 함수는 호출될 때(실행컨텍스트 생성할 때) this binding을 하지 않는다.
  2. 일반 함수는 호출될 때 this binding을 실행하며 호출 주체가 따로 없기 때문에 전역객체(global 또는 window)로 지정된다.
  3. 콜백함수도 다른 함수와 마찬가지로 호출될 때 this binding이 적용되며 전역객체로 지정된다.


위 세 명제는 이해했습니다. 만약 그러면 콜백함수를 화살표함수로 정의한 경우에는 어떻게 되나요?

이를 알아보기위해 혼자서 아래와 같은 코드를 짜서 돌려봤습니다.


[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로 갖는지는 잘 모르겠습니다.


이해 도와주시면 감사하겠습니다.

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴