实现一个 add
方法,预期效果如下:
add(1)(2, 3)(4).value() // 10
实现如下:
function add(...args) {
const result = add.bind(null, ...args)
// const result = (...args1) => add(...args, ...args1)
result.value = () => args.reduce((acc, cur) => acc + cur)
return result
}
add(1)(2, 3)(4).value() // 10
add(1)(2)(3)(4).value() // 10
add(1, 2, 3)(4).value() // 10
我们使用了 Rest 运算符将传递给 add
函数的多个参数绑定到一个数组中。接着,我们使用函数的 bind
方法来创建一个新的函数,并通过 Spread 运算符将参数传递给新函数。
为新创建的函数添加一个 value
属性,该属性是一个函数,可以返回所有参数的总和。我们可以使用 reduce
方法来计算参数的总和。