변수에 할당하는 경우
1 2 3 4 5 6 7 | // 함수를 add라는 변수에 할당 const add = function (num) { return num + num; }; // 함수를 가진 add를 실행시킨 값을 output에 할당 let output = add(7); console.log(output);// 14 | cs |
다른 함수의 인자로 전달하는 경우
1 2 3 4 5 6 7 8 9 10 11 12 | function multiply(num) { return num * 5; } function test(func, num) { return func(num); } //test함수는 전달 인자로 multiply함수를 //콜백함수와 4를 주어 함수 내용을 실행시킴 //인자로 받은 multiply함수가 실행되고 //mutiply함수의 인자로 4가 들어가 20을 let output = test(multuply, 4); console.log(output); // 20 | cs |
함수를 자체를 리턴하는 경우
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function addition(addNum) { return function (num) { return num + addNum; }; } //함수 addtition은 다른 함수를 리턴하는 고차 함수 //addtition은 인자 한 개를 입력받아서 함수를 리턴 //리턴되는 익명 함수는 인자 한 개를 받아서 add와 더한 값 리턴 //addition(5)은 addNum의 자리에 전달 인자로 5를 넣어주고 익명 함수를 리턴 //익명 함수에 전달 인자로 3을 주었고 5 + 3으로 8을 리턴 let output = addition(5)(3); // -> 8 console.log(output); // -> 8 // addtition(3)의 리턴하는 함수 자체를 변수 addModule에 저장 const addModule = addtition(3); output = add3(2); console.log(output); // -> 5 | cs |
함수를 인자로 받고, 함수를 리턴하는 경우
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function mulitply(num) { return num * 2; } function doubleAddModule(added, func) { const doubled = func(added); return function (num) { return num + doubled; }; } //함수 doubleAddModule는 고차 함수입니다. //함수 doubleAddModule의 인자 func는 함수 doubleAddModule의 콜백 함수 //함수 mulitply은 함수 doubleAddModule의 콜백으로 전달 //doubleAddModule(5, multiply)를 실행시키고 함수 자체를 리턴 //익명 함수가 실행되고 인자로 3을 받아 3 + 10 doubleAddModule(5, multiply)(3); // -> 13 const add = doubleAddModule(3, multiply); add(2); // --> 8 | cs |