直接上代码
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
网友评论