Igo*_*ets 4 javascript closures
如何实现用于乘以任意数量的数字的锁定功能。
调用示例:
multiply(1)(2)(3)(4)(5) // 120
Run Code Online (Sandbox Code Playgroud)
为了完成这个任务,需要重新定义toString内部函数的方法,该方法应该返回累积结果,但我有结果NaN。
multiply(1)(2)(3)(4)(5) // 120
Run Code Online (Sandbox Code Playgroud)
首先不要arguments在函数中用作参数,因为该变量在函数中可用作函数(argumentsobject)参数的对象数组。
然后你需要有一个内部函数m,它使用参数并计算乘积并返回函数本身。
内部函数获取toString获取最终结果的方法。
最后,您需要使用外部函数的所有参数调用内部函数。
一个小提示,对于不可实例化的函数,只取一个小写字母。
function multiply(...args) {
function m(f, ...a) {
p *= f;
if (a.length) {
m(...a);
}
return m;
}
var p = 1; // neutral value for multiplication
m.toString = _ => p;
return m(...args);
}
console.log(multiply(5)(5)(6)(8));
console.log(multiply(2, 3, 4)(5)(6, 7));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |