javascript题目,重写函数让其无限相加

  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,详见我另一篇博文。

  如果你有不同的解法,也请多多指教!