Javascript 如何实现此逻辑添加(1)(2)(1)。。高达(n)?
我知道这个问题已经用有限的能力得到了回答,但我想用n个参数和n个时间来回答它Javascript 如何实现此逻辑添加(1)(2)(1)。。高达(n)?,javascript,syntax,logic,Javascript,Syntax,Logic,我知道这个问题已经用有限的能力得到了回答,但我想用n个参数和n个时间来回答它 function add(x) { return function(y) { if (typeof y !== 'undefined') { x = x + y; return arguments.callee; } else { return x; } }; } add(1)(2)(
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
问题是,只有当我添加额外的空括号()
如果执行此操作添加(1)(2)(3)
尝试将数字作为数组发送,并更改功能代码以反映这些更改 注意:代码未经测试
function add(x) {
var result = 0;
for (i = 0; i < x.length;i++){
result+=x[i];
}
return result;
}
add(new Array(1,2,3));
函数添加(x){
var结果=0;
对于(i=0;i
试试这个:
function add(x) {
var fn = function(y) {
x = x + y;
return arguments.callee;
};
fn.toString = function(){ return x; };
return fn;
}
以下代码的工作方式与您要求的完全相同:
function add(a)
{
var c=a,b=function(d){c+=d;return arguments.callee;};
b.toString=function(){return c;}return b;
}
请注意,某些操作会检测作为函数给出的结果,但任何需要字符串或整数的函数都会看到正确的值。这里的要点是启用特殊语法,如果您只想在函数中添加任意数字,甚至不需要数组。您应该提出您的问题clear@AndréPena问题很清楚,也许你在这种javascript编程风格方面没有足够的经验来理解它。我认为这很清楚。他想无限次地使用函数,而不必执行最后一个函数,立即获得值。这是不可能的,这些东西不能共存。但是,您可以滥用
toString
或valueOf
。@elclars javascript可以在对象被视为字符串的情况下自动执行toString
方法,因此这是可能的,它只是附带了一些警告,即它是一个可以作为字符串读取的对象。(例如,类型等于'function',以及其他一些小的奇怪问题)这就是我所说的“滥用”。+1但如果在控制台中使用它,这将不起作用。log
值得一提的是参数。被调用方
不应该再使用,而应该使用命名函数。