Shk*_*riy 0 javascript closures
我尝试使用闭包进行下一步:
function func(number) {
var result = number;
var res = function(num) {
return result + num;
};
return res;
}
var result = func(2)(3)(4)(5)(3);
console.log(result); // 17
Run Code Online (Sandbox Code Playgroud)
我需要收到2 + 3 + 4 + 5 + 3 = 17但我收到一个错误:未捕获TypeError:数字不是函数
你不知何故必须发出链的末尾信号,你要返回结果号而不是另一个函数.你有选择:
func(n))为多少参数的个数sum是令行禁止.null在@ AmoghTalpallikar的答案中).在函数对象上创建一个返回值的方法.valueOf()很适合,因为当函数转换为原始值时将调用它.看到它的实际效果:
function func(x) {
function ret(y) {
return func(x+y);
}
ret.valueOf = function() {
return x;
};
return ret;
}
func(2) // Function
func(2).valueOf() // 2
func(2)(3) // Function
func(2)(3).valueOf() // 5
func(2)(3)(4)(5)(3) // Function
func(2)(3)(4)(5)(3)+0 // 17
Run Code Online (Sandbox Code Playgroud)