Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2014年12月22日 D4 #30

Open
nunnly opened this issue Dec 22, 2014 · 5 comments
Open

2014年12月22日 D4 #30

nunnly opened this issue Dec 22, 2014 · 5 comments
Labels

Comments

@nunnly
Copy link
Owner

nunnly commented Dec 22, 2014

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

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
@qingo
Copy link

qingo commented Dec 22, 2014

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

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

@qingo
Copy link

qingo commented Dec 22, 2014

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

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

@think2011
Copy link
Collaborator

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

@woodleaf
Copy link

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

@nunnly nunnly added 难度4 and removed question labels Jan 23, 2015
@Xinuy-Leung
Copy link

   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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants