본문 바로가기

Programming Language/JavaScript

자바스크립트에서 자주 사용하는 고차 함수(forEach, filter, sort, map, reduce) - 1

자바스크립트를 함수형 프로그래밍에 알맞은 언어로 만들어주는 특성이 바로 자바스크립트가 고차 함수 개념을 받아들인 다는 것이다. 

따라서 고차 함수가 무엇인지 소개하고 앞으로 개발하면서 자주 사용하게 될 고차 함수들의 사용법을 설명하려고 한다.

 

고차 함수는 함수를 인자로 받거나 함수를 반환한다

고차 함수(Higher-Order Function)란?

고차 함수는 함수를 인자로 받거나 함수를 반환하는 함수를 말한다.

이때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 한다.

 

콜백 함수를 전달받은 함수는 이 콜백 함수를 호출(invoke)할 수 있다. 조건에 따라서 콜백 함수의 실행 여부를 결정할 수 있고 여러 번 실행할 수도 있다. 

 

// 다른 함수를 인자로 받는 경우

function doubleNumber(num){
	return num * 2;
}

function multiply(func, num){
	return func(num);
}

console.log(multiply(doubleNumber, 10); 	// 20

 

함수 multiply는 다른 함수(func)를 인자로 받는 고차 함수다. 함수 multiply의 첫 번째 인자 func에 함수가 들어올 경우에, func는 multiply의 콜백 함수이다. 

 

 

한편, '함수를 리턴하는 함수'만을 의미하는 용어가 따로 존재한다. 이 함수를 고안해 낸 논리학자 하스켈 커리(Haskell Curry)의 이름을 따라 커리 함수라고 부른다. 

따로 커리 함수라는 용어를 사용하는 경우, 고차 함수를 '함수를 인자로 받는 함수'에만 한정지어서 사용하기도 한다. 

 

// 함수를 리턴하는 경우

function adder(added){
	return function (num) {
    	return num + added;
    }
}

const add10 = adder(10);
console.log(add10(5));		// 15
const add35 = adder(35);
console.log(add35(5));		// 40

 

함수 adder는 다른 함수를 반환하는 고차 함수다. adder는 인자 한 개(added)를 입력받아서 익명 함수를 반환한다.  반환되는 익명 함수는 인자 한 개를 받아서 added와 더한 값을 반환한다. 

 

다음 블로그에서 알아두면 편하고 자주 사용하게 될 고차 함수들의 사용법을 설명한다.

 

요약

  • 고차 함수는 함수를 인자로 받거나 함수를 반환할 수도 있다.

 

 

 

 

References

velog.io/@jakeseo_me/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%9D%BC%EB%A9%B4-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-33%EA%B0%80%EC%A7%80-%EA%B0%9C%EB%85%90-22-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B3%A0%EC%B0%A8-%ED%95%A8%EC%88%98Higher-Order-Function-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

velog.io/@rememberme_jhk/JS-%EA%B3%A0%EC%B0%A8%ED%95%A8%EC%88%98-higher-order-function

devowen.com/277