高階函數(shù)

一種緩存方法

function test (fn) {
  var cache = {}
  return function () {
    // 等價于add函數(shù)
    var args = JSON.stringify(arguments)
    if (!cache[args]) {
      cache[args] = fn(arguments)
    }
    return cache[args]
  }
}

var add = test(function (args) {
  var argLen = args.length,
    item,
    res = 0
  for (var i = 0; i < argLen; i++) {
    item = args[i]
    res += item
  }
  return res
})

console.log(add(1, 2, 3))   // 6

左傾函數(shù)

function compose () {
  var args = [].slice.call(arguments)
  return function (x) {
    return args.reduceRight(function (prev, cur) {
      return cur(prev)
    }, x)
  }
}

function compose2 () {
  let args = [].slice.call(arguments)
  return x => args.reduceRight((res,cb) => cb(res), x)
}

var toUpperCase = x => x.toUpperCase()
var split = x => x.split('')
var reverse = x => x.reverse()
var join = x => x.join('')

var f = compose2(join, reverse, split, toUpperCase)
console.log(f('hello'))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容