javascript - 有人可以解释 SUM 函数任务吗?

标签 javascript nested sum

创建一个函数 sum,其工作方式如下:sum(a)(b) = a+b 并接受任意数量的括号。

任务取自this learning source .

function sum(a) {
  
  var sum = a 
  
  function f(b) {
    sum += b
    return f
  }
  
  f.toString = function() { return sum }
  
  return f
}

alert( sum(1)(2) )  // 3
alert( sum(5)(-1)(2) )  // 6
alert( sum(6)(-1)(-2)(-3) )  // 0
alert( sum(0)(1)(2)(3)(4)(5) )  // 15

谁能解释一下它是如何工作的吗? A 和 B 争论很好,但是我们在代码中的哪里使用其他争论(在其中两个以上的情况下)? 为什么我们需要在这里使用 toString 方法?是与问题有关还是只是为了提醒。 另外,我用 console.log 而不是 alert 尝试了相同的代码,但没有成功。这里有什么问题吗?

最佳答案

将警报从图片中删除,您将调用以下代码:

sum(1)(2)

您可能对双括号感到困惑 - 这里发生的情况是您首先调用 sum 函数,并向其传递 1 参数。当您将 1 传递给 sum 时,您将 1 设置为名为 sum 的局部变量,则函数为声明 f 并用作 sum 函数的返回值。

因此,由于您调用了 sum 并返回了一个函数 (f),因此您可以使用参数 调用该函数 2

所以本质上,你实际上是在这样做:

var someFunc= sum(1);
someFunc(2);

可以这样重写:

sum(1)(2);

关于javascript - 有人可以解释 SUM 函数任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633202/

相关文章:

mysql - 如何隐藏sql中为空的和值?

python - 索引数组中重复条目的 Numpy 总和

javascript - Typescript 嵌套此不调用定义的函数

django - 是否可以使用 Django 在另一个 StackedInline 中嵌入一个 StackedInline?

python - 如何从点分隔的字符串列表重建 JSON?

php - 如何对一行中除ID以外的所有列的值求和

javascript - JS、JQuery 不能与 heroku 一起使用

javascript - Qooxdoo 声音按钮开/关不起作用

javascript - 为什么我不能将数组连接到过滤器的结果?

javascript - 如何从函数的参数设置状态键?