고차함수 정리

이종원·2020년 9월 25일
0

자바스크립트 함수는
변수에 할당 할 수 있다
다른 함수의 인자로 전달될 수 있다.
다른 함수의 결과로서 리턴될수 있다
또한 변수에 저장할 수 있기 때문에 배열의 요소나 객체의 속성값으로 저장하는 것도 가능하다

  • 변수에 함수를 할당하는 경우
let squre = function (num){
	return num * num
}

output = square(7) 
	console.log(output) // 49

고차함수란
함수를 인자(매개변수)로 받거나 함수를 리턴하는 함수를 말한다 이때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백함수라고 한다

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

function double(num){
	return num * 2
 }
 
function doubleNum(func, num){ //(double, 4)
	let doubleArr = []
	return func(num) // double(4)
}

let output = doubleNum(double, 4);
console.log(output); // -> 8

중요한점
1. 함수 doubleNum은 다른 함수를 인자로 받는 고차 함수이다
2. 함수 doubleNum의 첫 번째 인자 func에 함수가 들어올 경우
3. 함수 func는 함수 doubleNum의 콜백 함수이다
4. 아래와 같은 경우, 함수 double은 함수 doubleNum의 콜백 함수이다

2.함수를 리턴하는 경우

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

let output = adder(5)(3) // 8
console.log(output) // 8

let add3 = adder(3)
output = add3(2)
console.log(output) // 5

중요한점
1. 함수 adder는 다른 한수를 리턴하는 고차함수이다
2. adder는 인자 한개를 입력받아서 함수를 리턴한다
3. 리턴되는 익명 함수는 인자 한 개를 받아서 added와 더한 값을 리턴한다

3.함수를 인자로 받고, 함수를 리턴하는 경우

function double(num){
	return num * 2
}

function doubleAdder(added, func) {
	const doubled =func(added)
    return function (num) {
    	return num + doubled
	}
}

doubleAdder(5, double)(3); // -> 13

const addTwice3 = doubleAdder(3, double);
addTwice3(2); // --> 8

중요한점
1. 함수 doubleAdder는 고차 함수이다
2. 함수 doubleAdder의 인자 func는 함수 doubleAdder의 콜백 함수이다
3. 함수 double은 함수 doubleAdder의 콜백으로 전달되었다

0개의 댓글