1. 함수와 함수의 호출

const add = (a, b) => a + b;

function calculator(func, a, b) {
	return func(a, b)
}

add (3, 5);

calculator(??, a, b);

calculator 함수의 파라미터 ??에 적절한 것은 무엇일까?

1) add

2) add()

 

Tip) 함수호출이 아닌 함수가 와야한다. 선언된 함수 뒤에 ()라는 호출을 붙이게 되면, 위와 같은 경우는 undefined + undefined 라는 리턴값이 온다고 생각하면 헷갈리지 않는다.  ex) calculator(undefined + undefined , a, b)

 


2. 고차 함수

const onClick = () => () => {
	console.log('foo');
}

위에 onClick 함수는 고차함수의 예시이다.

헷갈릴때는 아래와 같이 바꿔줄 수 있어야한다.

const onClick = () => {
	return () => {
    	console.log('foo');
    }
}

Tip) 고차함수의 경우 함수를 리턴하기 때문에 addEventListener안에 onClick()형태로 함수호출하는 것이 가능하다.

파라미터가 존재할때, 더 헷갈리는 경우가 생긴다. event 파라미터로 위치 또한 신경써야하는 부분이다.

 

나쁜예

const onClick = (event) => () => {
	console.log('bar');
}

document.querySelector('#header').addEventListener('click', onClick());

//onClick 리턴 값을 직접 넣어본다.
//event가 들어오지 않는다.
//잘못됨 확인
document.querySelector('#header').addEventListener('click', () => {
	console.log('bar');
});

 

좋은예

const onClick = () => (event) => {
	console.log('bar');
}

document.querySelector('#header').addEventListener('click', onClick());

document.querySelector('#header').addEventListener('click', (event) => {
	console.log('bar');
});

'Javascript & Typescript' 카테고리의 다른 글

자바스크립트 호이스팅(hoisting)  (0) 2022.03.30

+ Recent posts