【问题标题】:How to implement function with multiple invocations [duplicate]如何通过多次调用实现功能[重复]
【发布时间】:2017-06-06 18:42:37
【问题描述】:

我如何在javascript中实现一个可以像这样调用的加法器函数

adder(1,2)(5,6,2)(4,9,10,11)(6,7).....()

函数应该接受任意数量的参数并将它们加在一起。该函数可以通过以下方式调用。

adder(2,3,5) // prints 10
adder(2,3)(5) // prints 10
adder(2)(3)(5) //prints 10

使用闭包实现此功能的最佳方法是什么?

【问题讨论】:

  • 为什么要实现这个语法?
  • 您可以使用arguments 对象作为函数的可变参数。
  • 对不起,这被标记为重复...有一个简单的解决方案;链接的答案执行复杂且不必要的步骤。这个问题在我发布答案之前就已经结束了,但要点是:使用arguments 对象循环遍历每个传递的数字,将这些数字相加为sum 之类的值。在函数的最后,返回adder.bind( null, sum )。调用此返回函数会将您传递的每个数字与之前的总和相加。

标签: javascript function method-invocation


【解决方案1】:
function add(...values){
 this.value=(this.value||0)+values.reduce((a,b)=>a+b),0);
 return add.bind(this);
}

您需要一种将值从函数中传递出来的方法,我将值放入上下文中:

add(1,2,3)(4,5);
alert(value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    相关资源
    最近更新 更多