使用左大括号结束Javascript函数是一个错误?

时间:2016-05-09 20:25:37

标签: javascript syntax anonymous-function snap.svg self-invoking-function

直到最近,我还只是简单的Javascript中的一个dabbler。在过去的几周里,我一直在努力学习它的更高级方面。来自经典的编程背景,Javascript中的原型已经让我循环了几次......

在研究Snap.svg API(尝试学习技术)时,我发现了以下内容:



    (function (glob, factory) {
    // AMD support
    if (typeof define == "function" && define.amd) {
        // Define as an anonymous module
        define(["eve"], function (eve) {
            return factory(glob, eve);
        });
    } else if (typeof exports != 'undefined') {
        // Next for Node.js or CommonJS
        var eve = require('eve');
        module.exports = factory(glob, eve);
    } else {
        // Browser globals (glob is window)
        // Snap adds itself to window
        factory(glob, glob.eve);
    }
}(window || this, function (window, eve) {




这是最新版本的Snap,从#423行开始

起初,我认为这是一个匿名的自我调用函数,然后我注意到了开放的大括号。我查看了下面的代码并且无法解释结束括号。此外,在8k +代码行中搜索花括号的出现(使用notepad ++)表示比闭合更多的开括号。此外,当我在代码段中折叠第一行时,整个代码(大约8000行)的代码会崩溃。 API中的最后一行代码以:

结尾
}));

是否有可能将函数上缺少的右括号推到文件的末尾?那可能是文​​件末尾的双重括号(第二个片段)?我在github上报告错误,但我假设我读错了。

如果有人能解释发生了什么,我会很感激。

1 个答案:

答案 0 :(得分:0)

最后的}))实际上关闭了大部分代码,并且是一个错误。

您正在查看的是代码的UMD包装器,以便可以通过全局引用,AMD和CommonJS加载。