everycode icon indicating copy to clipboard operation
everycode copied to clipboard

2014年12月22日 D4

Open nunnly opened this issue 11 years ago • 5 comments

创建一个函数,将传入的数字相加,支持链式调用。

function add(n){
//  param Number
}
add(1) // 1

我们也可以多次链式调用

add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15

也要支持,存储和重用。

var addTwo = add(2);
addTwo // 2
addTwo(3) // 5
addTwo(3)(5) // 13

nunnly avatar Dec 22 '14 05:12 nunnly

此函数add 每定义次只能使用一次!

var add = (function(){
  var r = 0;
  return function p(n){
    r += n;
    p.toString = function() {
      return r;
    };
    return p;
  }
})();

qingo avatar Dec 22 '14 06:12 qingo

再来一发 改进后的 可以多次用的函数

function add(m) {
  var r = m;
  function p(n) {
    r += n;
    return p;
  }
  p.valueOf = function () {
    return r;
  };
  return p;
}
add(1); // 1
add(1)(2); // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15

qingo avatar Dec 22 '14 06:12 qingo

function add(n) {
    function counter(m) {
        n += m;
        return counter;
    };
    counter.toString = counter.valueOf = function () {return n}

    return counter;
}


// 测试用例
console.log(add(1)(2)(3)); // 6
console.log(add(1)(2)(3)(4)); // 10
console.log(add(1)(2)(3)(4)(5)); // 15

var addTwo = add(2);
console.log(addTwo) // 2
console.log(addTwo(3)) // 5
console.log(addTwo(3)(5)) // 13

think2011 avatar Dec 22 '14 08:12 think2011

function add(n){
    sum=n;
    add=function(m){
        sum+=m;
        return add;
    };
    add.toString=add.valueOf=function(){return sum};
    return add;
}

woodleaf avatar Dec 22 '14 11:12 woodleaf

   function add(n){
        function helper(a,b){
            var sum=a+b;
            var s=helper.bind(null,sum);
            s.valueOf=s.toSrting=function(){
                    return sum;
                }
                return s;
            }
            return helper(n,0);
        }
console.log(+add(1)(2)(3)); // 6
console.log(+add(1)(2)(3)(4)); //10
console.log(+add(1)(2)(3)(4)(5)); // 15
var addTwo = add(2); // 2 
addTwo(3); // 5
addTwo(3)(5); // 13

Xinuy-Leung avatar Jul 04 '15 13:07 Xinuy-Leung