群里有个出了一道有趣的题目,分享出来让大家看看
function add(x) {________}; alert(add(2)(3)(4)); //填空,使结果为9 
解法一, 
复制代码 代码如下:
 
//貘大 
function add(x) { 
var c = 0; 
return function(x) { 
c = c + x ; arguments.callee.toString = function(){ 
return c; 
}; 
return arguments.callee; 
}(x); 
}; 
alert(add(2)(3)(4)); 
解法二,
复制代码 代码如下:
 
//三桂 
function add(x) { 
return function(y){ 
return function(z){ 
return x+y+z; 
} 
} 
}; 
alert(add(2)(3)(4)); 
解法三,
复制代码 代码如下:
 
//司徒正美 
function add (a){ 
if(!isFinite(add.i)){ 
add.i = a 
}else { 
add.i += a; 
} 
add.valueOf = add.toString = function(){ 
return add.i 
} 
return add; 
} 
alert(add(2)(3)(4)) 
其实上题就是考curry,详见我另一篇博文。
如果你有不同的解法,也请多多指教!
您可能感兴趣的文章:
