JavaScript 闭包计算总和
JavaScript Closures calculate sum
我刚开始学习 JavaScript 中的闭包,我正在尝试理解一个基本问题。
例如,我正在尝试实现求和方法:sum(1)(4)(5)
const sum = (a) => {
return (b) => {
if(typeof b === 'number')
return sum(a+b)
return a;
}
}
当我调用时:console.log(sum(1)(4)(5)())
它工作完美,return 10。但是,如果我调用 console.log(sum(1)(4)(5))
,它 returns [Function (anonymous)]
。为什么?
谢谢
每次调用函数时:
sum(1)(10)
您正在 return 调用内部函数:
(b) => {
if(typeof b === 'number')
return sum(a+b)
return a;
}
因为 b 的类型 === 'number' 而你正在 returning sum(a+b) 调用
函数 sum 和 returns 又是内部函数。这就是为什么当你最终把最后一个括号放在:
sum(1)(10)()
内部函数将执行,在这种情况下,b 的类型不同于数字,并且将 return 'a' 已经包含值的总和。
我刚开始学习 JavaScript 中的闭包,我正在尝试理解一个基本问题。
例如,我正在尝试实现求和方法:sum(1)(4)(5)
const sum = (a) => {
return (b) => {
if(typeof b === 'number')
return sum(a+b)
return a;
}
}
当我调用时:console.log(sum(1)(4)(5)())
它工作完美,return 10。但是,如果我调用 console.log(sum(1)(4)(5))
,它 returns [Function (anonymous)]
。为什么?
谢谢
每次调用函数时:
sum(1)(10)
您正在 return 调用内部函数:
(b) => {
if(typeof b === 'number')
return sum(a+b)
return a;
}
因为 b 的类型 === 'number' 而你正在 returning sum(a+b) 调用 函数 sum 和 returns 又是内部函数。这就是为什么当你最终把最后一个括号放在:
sum(1)(10)()
内部函数将执行,在这种情况下,b 的类型不同于数字,并且将 return 'a' 已经包含值的总和。