美文网首页
高阶函数

高阶函数

作者: MF_遇见零一 | 来源:发表于2019-01-12 13:57 被阅读0次

    一种缓存方法

    function test (fn) {
      var cache = {}
      return function () {
        // 等价于add函数
        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
    
    

    左倾函数

    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'))
    

    相关文章

      网友评论

          本文标题:高阶函数

          本文链接:https://www.haomeiwen.com/subject/daxcdqtx.html