创建一个函数 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/