javascript - 调用带有多个闭包的 javascript 函数

标签 javascript function closures

    function sum(a) {
        var sum = a
        function f(b) {
            sum += b
            return f
        }

        f.toString = function () { return sum }
        return f
    }
    var a = sum(0)(1)(2)(3)(4)(5);

有人可以向我解释一下这段代码是如何工作的吗?我真的不知道如何以这种方式调用具有多个闭包的函数。 为什么当我在浏览器控制台中打印 a 时,结果是“function 15”而不仅仅是 15

最佳答案

And why when i print a in the browsers console the result is "function 15" and not just 15

要获得最终结果,您应该调用toString函数。此闭包将保存总和,直到您调用 toString 函数为止。

function sum(a) {
    var sum = a

    function f(b) {
        sum += b
        return f
    }

    f.toString = function() {
        return sum;
    }
    return f
}

var a = sum(0)(1)(2)(3)(4)(5);

document.write(a.toString());

关于javascript - 调用带有多个闭包的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603977/

相关文章:

javascript - 如何使用 jQuery 使对象在视口(viewport)中水平居中?

JavaScript、表单、 Canvas 、绘制三 Angular 形

javascript - 在 Aurelia 的 Viewmodel 中更改对象后,字符串插值未更新

javascript - 日期选择器不允许今天的日期作为接受

c# - C# 是否支持 inout 参数?

javascript - 如何使用 javascript 将回调添加到函数中?

javascript - 在这个陈旧的闭包中“实际上”发生了什么?

JavaScript:引用 'this' 关键字的闭包

swift - 这个特定的闭包语句中 = 符号的作用是什么?

javascript - 单击观察器时隐藏图层