我该如何创建一个可以多次调用其结果但在停止时仍能获得其值的函数?
例如-
add(2)(3) // 5
add(2)(3)(6) // 11
我应该如何实现add
来获得它?
答案 0 :(得分:3)
如果您以某种方式消耗了该值,则有可能。您需要根据用途实现自定义valueOf
和/或toString
方法。
但是请记住,值仍然是一个函数。如果您进行typeof add(1)
,则将获得"function"
const add = value => {
const next = sum => add(value + sum)
next.valueOf = next.toString = function() {
return value;
}
return next
}
console.log(add(1), add(1)(2), add(1)(2)(3))
console.log(typeof add(1)(2))
答案 1 :(得分:0)
由于闭包的性质,JavaScript可以做到这一点。从上一个函数调用中返回一个函数。像这样:
//add(2)(3) // 5
//add(2)(3)(6) // 11
function add2(a) {
var i = a;
return function(b) {
i += b;
return i;
};
}
function add3(a) {
var i = a;
return function(b) {
i += b;
return function(c) {
i += c;
return i;
}
};
}
console.log(add2(2)(3));
console.log(add3(2)(3)(6));