多次计算

2020-12-08  本文已影响0人  立立亭亭

直接上代码

function create(fn, init) {
  let initdata = { result: init }
  return function() {
    let args = [].slice.call(arguments)
    if (args.length === 0) {
      return initdata.result
    }
    fn.apply(initdata, args)
    return arguments.callee
  }
}

let add = create(function() {
  this.result = [].reduce.call(
    arguments,
    function(a, b) {
      return a + b
    },
    this.result
  )
  console.log(arguments,this.result)
}, 10)

console.log(add(20, 5, 4, 7)(30, 6)(10, 8, 9)())

运行结果

[Arguments] { '0': 20, '1': 5, '2': 4, '3': 7 } 46
[Arguments] { '0': 30, '1': 6 } 82
[Arguments] { '0': 10, '1': 8, '2': 9 } 109
109
上一篇下一篇

猜你喜欢

热点阅读