<分区>
我已经写代码实现了
sum(1)(2) //3
代码如下:
function sum(a) {
return function(b) {
return a+b
}
}
但是我没有想出第二个问题,就是如何实现任意数量的链式函数调用 like:
sum(1)(2) == 3
sum(5)(-1)(2) == 6
sum(6)(-1)(-2)(-3) == 0
sum(0)(1)(2)(3)(4)(5) == 15
<分区>
我已经写代码实现了
sum(1)(2) //3
代码如下:
function sum(a) {
return function(b) {
return a+b
}
}
但是我没有想出第二个问题,就是如何实现任意数量的链式函数调用 like:
sum(1)(2) == 3
sum(5)(-1)(2) == 6
sum(6)(-1)(-2)(-3) == 0
sum(0)(1)(2)(3)(4)(5) == 15
最佳答案
通常你会做这样的事情:
var add = function(a,b){
return a+b;
};
var sum = function(){
return [].reduce.call(arguments, add);
}
然后你可以这样写:
sum(1,2,3,4); // 10
但有可能破解您想要的功能:
var sum = function(x){
var f = function(y){
return sum(x+y);
};
f.valueOf = function(){
return x;
};
return f;
};
sum(1)(2)(3)(4); // 10
请不要在生产代码中这样做!
关于javascript - 如何在javascript中实现函数调用的任意链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26656718/