【发布时间】:2016-07-16 08:57:32
【问题描述】:
我正在学习这个site 并遇到了这个问题和答案:
编写一个 sum 方法,该方法在使用以下任一方法调用时都能正常工作 语法如下。
console.log(sum(2,3)); // Outputs 5
console.log(sum(2)(3)); // Outputs 5
//回答
function sum(x) {
if (arguments.length == 2) {
return arguments[0] + arguments[1];
} else {
return function(y) { return x + y; };
}
}
我理解 if 语句中的代码,但不理解 else 语句中的代码,因为它只是返回一个函数。该函数不是用'()'调用的,所以考虑到console.log(sum(2)(3)); 的第二种情况,我不明白它为什么会返回5。我只能看到它会返回function(3) {return 2 + 3},这应该会引发错误。
【问题讨论】:
-
"...该函数不是用 '()' 调用的..." 它是用
()调用的。它恰好在第一个()之后。sum(2)(3)(2)调用sum,(3)调用从sum(2)返回的任何内容。
标签: javascript return call