JavaScript重写函数让其无限相加


在网上看到一个很有趣的问题,这里拿来大家一起讨论一下,看看大家有没有什么好方法,发挥JavaScript大拿的技术吧!不多说了,上题:

   
  function add(x) {________};
  
alert(add(2)(3)(4)); //填空,使结果为9

为以上的add(x)方法添加一个函数体,使其最后能够实现将add(2)(3)(4)这样的参数传到add方法内新实现结果为它们参数的和。

趣味 JavaScript

old77 12 years, 7 months ago

@胡加杰 说的问题确实有,修改了一下,这次执行多次结果也是对的了

   
  function add(x) {
  
/*将add当做一个函数对象,判断add的i属性是否是数字,如果不是则将x赋值给add.i*/
if( !isFinite(add.i) ){
add.i = x
}else {
add.i += x;
}
add.toString = function(){
var res = add.i;
add.i = 0;
return res;
}//重构add.toString方法为返回add.i值
return add; //返回add函数对象
};
alert(add(2)(3)(4));
alert(add(2)(3)(4)(5));

加了一下注释

abtll answered 12 years, 7 months ago

Your Answer