JavaScript 고차 함수(Higher-Order Function)

GEUNNN Lee·2021년 2월 9일
0

일급 객체 (First-class citizen/object)

JavaScript에선 함수를 일급 객체로 취급한다. 이는 다른 자료형(string, float, array 등)과 마찬가지로 함수 역시 변수(variable)로 받고 리턴할 수 있는 뜻이다. 새로운 변수에 함수를 할당도 가능하다.

const checkTheTimeThatINeedToFeedTheCat (time) => {
  if (time === 8) {
  	console.log("It\'s time to the cat!"}
 };
  
const feedingTime = checkTheTimeThatINeedToFeedTheCat;

feedingTime();

위처럼 긴 이름을 가진 함수를 새로운 변수로 선언할 수도 있다. 변수로 설정할 때는 괄호를 빼고 선언해야하는데 이는 함수 자체를 변수로 선언하기 때문이다. 괄호를 넣고 선언을 하면 함수를 실행한 값을 변수로 선언하는 것이기 때문에 함수 자체를 변수로 선언할 떄는 괄호를 빼야한다.

함수는 객체이기 때문에.length, .name .toString과 같은 메소드를 사용할 수 있다.

고차 함수 (Higher-order function)

함수는 일급 객체로 다른 자료형과 같아 함수 또한 다른 함수의 매개변수(parameter)로 전달과 결과로 리턴이 가능하다. 고차 함수는 하나의 함수가 다른 함수를 매개변수로 받거나 리턴하거나 둘 다 하는 함수이다.

다른 함수(caller)에 인자(argument)로 전달된 함수를 콜백 함수(callback function)라고 한다. 콜백 함수를 인자로 전달할 때는 함수 이름만 전달하며 괄호는 붙이지 않는다. 콜백 함수를 전달 받은 함수(caller)는 콜백 함수를 호출(invoke)한다.

const multiplyThree = num => num * 3;

const addValue = (func,val) => {
	return func + val;
}

addValue(multiplyThree,20); //20*3+20으로 답은 80

위 예시에서 콜백 함수는 multiplyThree 함수 이다.

profile
Frontend Developer 👩🏻‍💻👩‍💻

0개의 댓글