• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

질문드리겠습니다!

21.04.14 18:19 작성 조회수 59

0

forEach 에서 this를 참조 시에 

콜백 함수를 람다식으로 대체하면 this가 원래 참조가 안되는건가요!

아무리 시도해봐도 람다식으로 대체한 콜백함수문에서는 NaN만 출력되서 너무 답답합니다 ㅠㅠ

그에 반해 콜백함수 부분을 따로 외부로 빼니 잘 인식되는걸로 봐서는 원래 람다식에서는 this를 참조할수가 없는지 헷갈립니다.

항상 감사드립니다,

let list = [1, 2, 3];

list.forEach((value, index, array) =>
console.log(value + this.ten), {ten: 10});

let fn = function (value, index, array) {
console.log(value + this.ten);
}


list.forEach(fn, {ten: 10})

답변 1

답변을 작성해보세요.

3

화살표 함수(=>)는 "자바스크립트 ES6+ 기본" 강좌에서 다룹니다만, 함수가 속한 환경에 따라 this가 참조하는 오브젝트가 다릅니다.

작성된 코드에서는 window 오브젝트를 참조합니다.

이런 형태를 취하는 목적은 함수를 가볍게 사용하겠다는 것입니다.
화살표 함수에는 prototype이 없습니다.
따라서 prototype에 메소드를 연결할 수 없으며,
이것은 new 연산자로 인스턴스를 생성하지 않겠다는 것이 됩니다.

twosom님의 프로필

twosom

질문자

2021.04.15

감사합니다! ES6 기본강좌에서 제대로 배워보겠습니다~~!