函數語言程式設計 -- 高階函式
阿新 • • 發佈:2021-06-11
高階函式
- 高階函式(Hiner-order function),可以把函式作為引數傳遞給另一個函式,也可以把函式作為另一個函式的返回結果
// 函式作為引數
function forEach(array,fn){
for(let i = 0; i < array.length; i++){
fn(array[i])
}
}
// 測試
let arr=[1, 3, 4, 5, 7]
forEach(arr, function(item){
console.log(item)
})
// 函式作為返回值,這裡once使fn只執行一次 function once(fn){ let done = false return function(){ if(!done){ done = true return fn.apply(this, arguments) } } } // 測試 let pay=once(function(money){ console.log("支付:" + money + "RMB" }) pay(5) pay(5) // 輸出 // 支付:5RMB
常用高階函式
-
forEach
-
map
-
filter
-
every
-
some
-
find/findIndex
-
reduce
-
sort
... -
都些函式都有一個共同點 -- 需要接收一個函式作用引數
-
下面模擬一下map方法
// map const map = (array,fn)=>{ let results = [] for(let value of array){ results.push(fn(value)) } return results } // 測試 let arr = [1, 3, 4 ,6] arr = map(arr,v => v*v) console.log(arr) // 輸出 // [1, 9, 16, 36]