主题
闭包题
实现 foo
实现一个 foo 函数,有以下效果
js
const f1 = foo(1, 2, 3)
console.log(f1.getValue()) // 6
const f2 = foo(1, 2)(3)
console.log(f2.getValue()) // 6
const f3 = foo(1)(2, 3)(4)
console.log(f3.getValue()) // 10
js
function foo(...arg) {
// 存储传入的所有变量
const arr = [...arg]
function fn(...arg) {
arr.push(...arg)
return fn
}
fn.getValue = function () {
return arr.reduce((sum, i) => sum + i, 0)
}
return fn
}