首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用链接/参数的不同组合的"add“函数

使用链接/参数的不同组合的"add“函数
EN

Stack Overflow用户
提问于 2015-03-08 22:24:16
回答 4查看 3.1K关注 0票数 16

我正在尝试编写一个在许多情况下都可以工作的add函数。

代码语言:javascript
复制
add(2,2,2) //6
add(2,2,2,2) //8
add(2)(2)(2) // 6
add(2)(2)(2,2).value() //8
add(2,2)(2) + 2 //8
add(2).add(2) //4
add(2,2,2).add(2).add(2,2).value() //12
add(2,2,2).add(2).value() //8

这就是我到目前为止所知道的:

代码语言:javascript
复制
function add(){
    var sum = 0;
    for( var i in arguments ){
        sum += arguments[i];
    }

    var ret = add.bind(null, sum);

    ret.value = function () {
      return sum;
    }

    ret.add = function () {
      for( var i in arguments ){
        sum += arguments[i];
      }
      return sum;
    }

    ret.valueOf = function(){ return sum; };
    
    return ret;
}

console.log(add(2,2,2));
console.log(add(2,2,2,2));
console.log(add(2)(2)(2));
console.log(add(2)(2)(2,2).value());
console.log(add(2,2)(2) + 2);
console.log(add(2).add(2));
console.log(add(2,2,2).add(2).value());
console.log(add(2,2,2).add(2).add(2,2).value());

我对最后两个案例有个问题:

代码语言:javascript
复制
  add(2,2,2).add(2).add(2,2).value() //12
  add(2,2,2).add(2).value() //8

如果我想要将两个以上的函数链接在一起,并将value函数添加到每个函数中,那么我似乎必须继续嵌套add函数,但显然我遗漏了一些简单的东西,可以让我尽可能多地链接它们,并对它们中的任何一个调用value。

此外,它们需要总是返回it (而不是字符串),而且似乎有时返回,有时不返回?

EN

Stack Overflow用户

发布于 2015-03-08 22:33:32

既然您在ret.add函数中返回了sum,这就是错误出现的原因,请尝试如下所示,希望它能解决您的问题

代码语言:javascript
复制
function add(){
    var sum = 0;
    for( var i in arguments ){
        sum += arguments[i];
    }

    var ret = add.bind(null, sum);

    ret.value = function () {
      return sum;
    }

    ret.add = function () {
      for( var i in arguments ){
        sum += arguments[i];
      }
      return ret;
    }

    ret.valueOf = function(){ return sum; };

    return ret;
}
票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28927510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档