0

直到最近,我才涉足简单的 Javascript。在过去的几周里,我一直在尝试学习它更高级的方面。来自经典编程背景,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 上报告错误,但我假设我读错了。

如果有人能解释发生了什么,我将不胜感激。

4

1 回答 1

0

最上面的代码块实际上是由 final 关闭的})),这不是一个错误。

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

于 2016-05-09T20:30:11.247 回答