Higher Order Function的解釋如下。
引述維基百科的說明如下:
A higher-order function is a function that does at least one of the following:
- takes one or more functions as arguments
- returns a function as its result.
也就是一個函式(Function)若符合下列條件之一,即稱為Higher Order Function:
- 接收函式做為引數的函式。
- 回傳結果為函式的函式。
例如下面範例中,higherOrderFunction()
這個函式即為Higher Order Function,其接收一個Callback函式callbackFunction()
做為輸入引數(argument)。
/** Higher Order Function **/
function higherOrderFunction (callback) {
console.log("higherOrderFunction...");
callback();
}
function callbackFunction () {
console.log("callbackFunction...");
}
/** Callback Function */
higherOrderFunction(callbackFunction);
或是一個回傳函式的函式,也稱做Higher Order Function。
/** Higher Order Function **/
function higherOrderFunction () {
console.log("higherOrderFunction...");
return function(arg1) {
console.log(arg1 + "...");
};
}
/** Returned Function **/
var returnedFunction = higherOrderFunction();
returnedFunction("returnedFunction");
一些JavaScript內建的函式如filter()
,map()
因為也是以函式為輸入引數,所以也是Higher Order Function。
let numbers = [1,2,3,4,5,6];
function isEven(x){
return x % 2 === 0;
}
let evenNumbers = numbers.filter(isEven);
console.log(evenNumbers); // [2,4,6]
let numbers = [1,2,3,4,5,6];
function double(x){
return x * 2;
}
let doubledNumbers = numbers.map(double);
console.log(doubledNumbers); // [2,4,6,8,10,12]
參考:
沒有留言:
張貼留言