고차함수란 함수를 인자로 받거나, 함수를 결과값으로 리턴하는 함수를 말한다.
예로들면 Array.prototype.filter 나 Array.prototype.map 등이 있다.
const onClick = () => () => { // 함수자체를 리턴한다
console.log('hello');
}
//// () => {
// console.log("hello");
// }; 를 리턴하는것
// const onClick = () => {
// return () => {
// console.log("hello");
// };
// };
// 와 같음
const header = document.getElementById('header');
header.addEventListener('click', onClick());
// header.addEventListener("click", () => {
// console.log("hello");
// });
// 와 같음
addEventListener 에서 onClick이 아닌 onClick()으로 작성되어있는 코드가 있는데, 이럴때는 함수의 리턴값을 살펴보면 된다.
그리고 함수가 리턴하는 함수 자체를 저 이벤트리스너 함수에 붙여보면 알 수 있다.
함수의 선언과 호출을 잘 구분해야하는데, 함수선언에 ()까지 붙어있다면 리턴값을 잘 살펴보아야 한다.