var 함수 = (a) => { return a + 10 }
var 함수 = a => { return a + 10 }
var 함수 = a => return a + 10
// before
[1, 2, 3, 4].forEach(function (a) {
console.log(a);
});
// after(괄호 다 생략)
[1, 2, 3, 4].forEach(a => console.log(a));
// before
document.getElementById("버튼").addEventListener("click", function (e) {
console.log(this);
});
// after
document.getElementById("버튼").addEventListener("click", (e) => {
e.currentTarget;
});
주의 할 점은 arrow function은 바깥에 있던 this 값을 그대로 사용하는 특성 때문에
⚠️ arrow function을 쓰면서 이벤트 리스너 내부에서 e.currectTarget을 사용하고 싶은 경우 this를 쓰면 안됨.
// before
var 오브젝트 = {
함수: function () {
console.log(this); // { 함수 : f }
},
};
// after
var 오브젝트 = {
함수: () => {
console.log(this); // window
},
};
⚠️ 얘도 this 주의
<button id="버튼">버튼이에요</button>
<script>
document.getElementById('버튼').addEventListener('click', function(){
console.log(this.innerHTML)
});
</script>
정답
<button id="버튼">버튼이에요</button>
<script>
document.getElementById("버튼").addEventListener("click", function () {
setTimeout(() => {
console.log(this.innerHTML);
}, 1000);
});
</script>
✨ 이벤트 리스너 안의 함수는 구 문법, setTimeout 안의 함수는 화살표 함수를 사용했는데 이는 this가 e.currentTarget 값을 유지하게 하기 위해서다.