ES6 화살표 함수를 쓰는데 this가 예상과 다르게 동작합니다. ```javascript const obj = { name: '테스트', getName: () => { return this.name; // undefined } }; ``` 일반 함수로 바꾸면 되는데, 화살표 함수에서는 왜 this가 다른 건가요? 언제 화살표 함수를 쓰고 언제 일반 함수를 써야 하는 건지 헷갈립니다.
댓글 4
```javascript
const obj = {
name: '테스트',
getName() { // ES6 단축 메서드
return this.name; // '테스트'
},
getNameArrow: () => {
return this.name; // window.name (상위 스코프)
}
};
```
화살표 함수가 유용한 경우:
- 콜백 함수 (setTimeout, addEventListener 등)
- 배열 메서드 (map, filter, reduce)
- this를 바인딩하고 싶지 않을 때
일반 함수를 써야 하는 경우:
- 객체 메서드
- 생성자 함수
- prototype 메서드