我知道这个问题已经回答了有限的能力,但我想用n个参数n次?
function add(x) {
return function(y) {
if (typeof y !== 'undefined') {
x = x + y;
return arguments.callee;
} else {
return x;
}
};
}
add(1)(2)(3)(); //6
add(1)(1)(1)(1)(1)(1)(); //6
问题是这只有在我添加额外的空括号()时才有效
如果这样做add(1)(2)(3)
答案 0 :(得分:4)
试试这个:
function add(x) {
var fn = function(y) {
x = x + y;
return arguments.callee;
};
fn.toString = function(){ return x; };
return fn;
}
答案 1 :(得分:0)
以下代码的工作方式与您提出的完全相同:
function add(a)
{
var c=a,b=function(d){c+=d;return arguments.callee;};
b.toString=function(){return c;}return b;
}
请注意,某些操作会检测作为函数给出的结果,但是任何需要字符串或整数的函数都会看到正确的值。
答案 2 :(得分:-2)
尝试将您的数字作为数组发送并更改功能代码以反映这些更改。
注意:代码未经测试。
function add(x) {
var result = 0;
for (i = 0; i < x.length;i++){
result+=x[i];
}
return result;
}
add(new Array(1,2,3));