遇到一个题,通过柯里化的思想实现参数累加求和,类似于add(1)(2)(3)返回6,但是我写的demo,valueOf不会被调用
function add() {
var args1 = [...arguments]
var fn = function () {
var args2 = [...arguments]
return add.apply(null,args2.concat(args1))
}
fn.valueOf = function () {
return args1.reduce((a, b) => a + b)
}
return fn
}
console.log(add(1, 2, 3, 4, 5))
valueOf()方法和toString()方法是一样的,都会在后台进行隐式的调用,比如类型转换的时候。
比如:
console.log(add(1, 2, 3, 4, 5) + '')
或者,你在return的时候,直接return fn +''
也可以达到你的效果