dav*_*000 1 javascript closures input
我有这个函数,需要能够接受多组输入并返回每个输入的总和。例如:
magicFunction(1)(2)(3) => 6
Run Code Online (Sandbox Code Playgroud)
我用下面的代码完成了这一点。“f(y)”将一直运行,直到没有剩余的输入集。
function magicFunction(x) {
var sum = x;
function f(y) {
sum += y;
return f;
};
return f;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我希望函数返回总和,但该函数最后将返回“[Function: f]”。目前,该函数执行以下操作:
magicFunction(1)(2)(3) => [Function: f]
Run Code Online (Sandbox Code Playgroud)
我不知道如何在最后一次输入后返回总和。有没有办法检查代码是否到达最后一个输入集?因此,我可以运行“return sum”,而不是“return f”。
我考虑添加一个“toString”方法,然后使用“console.log”输出结果。但我正在寻找返回值的函数,而不仅仅是将值输出到控制台。
function magicFunction(x) {
var sum = x;
function f(y) {
sum += y;
return f;
};
f.toString = function () { return sum; }; // for expecting string, 1st log
f.valueOf = function () { return 100 + sum; }; // for expecting numbers, 2nd log
return f;
}
console.log(magicFunction(2)(3)(4));
console.log(magicFunction(2)(3) + magicFunction(4)(5));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2202 次 |
| 最近记录: |