1. 程式人生 > 其它 >函數語言程式設計 -- 高階函式

函數語言程式設計 -- 高階函式

高階函式

  • 高階函式(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]