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' 已经包含值的总和。