화살표함수의 this 바인딩

박찬욱·2023년 7월 25일
0

TIL

목록 보기
5/21
post-thumbnail

화살표 함수는 자신의 this, arguments, super, new.target을 바인딩하지 않습니다. 대신, 화살표 함수는 자신이 생성된 스코프의 해당 값을 상속받습니다.

function myFunction() {
  console.log(this);
}

const obj = {
  myFunction: myFunction,
};

obj.myFunction(); // obj를 this로 바인딩

위 예제에서 myFunction은 obj 객체에 메서드로 할당되었으므로, obj 객체를 this로 바인딩합니다. 하지만, 함수가 다른 함수 내부에서 호출되거나 다른 곳으로 전달되면 this 바인딩이 유지되지 않을 수 있습니다.

그러나 화살표 함수를 사용하면 이러한 문제를 해결할 수 있습니다

const myArrowFunction = () => {
  console.log(this);
};

const obj = {
  myArrowFunction: myArrowFunction,
};

obj.myArrowFunction(); 
// 화살표 함수는 자신의 this 바인딩이 없으므로 외부 스코프인 obj를 상속

위 예제에서 myArrowFunction은 화살표 함수로 정의되었기 때문에 자신의 this 바인딩이 없습니다. 그래서 외부 스코프인 obj 객체의 myArrowFunction 메서드 내부에서 호출되더라도, this는 obj를 상속받아 외부 스코프의 this를 그대로 사용하게 됩니다.

따라서 화살표 함수를 사용하면 함수의 this 바인딩을 고려할 필요가 없어지므로, 특히 콜백 함수 등에서 유용하게 사용됩니다. 이러한 특성 때문에 화살표 함수를 JSX 속성에 사용하면 react/jsx-no-bind 규칙을 위반하지 않게 됩니다.

profile
대체불가능한 사람이다

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기

관련 채용 정보