在查看中了解一些 jsfiddle 代码 - 需要一些解释

Understanding some jsfiddle code in looking at - need some explanation

我正在查看 JSFiddle 中有关 Firebase 身份验证的一些代码

http://jsfiddle.net/firebase/a221m6pb/

但是有些东西我不太了解代码... 顶部声明的函数

(function (jQuery, Firebase, Path) {

这是将 services/libraries 注入 jsfiddle 的某种方式吗?之前没见过这样的例子……谁能告诉我这个方法签名中的路径是什么?……我明白它的用途在此示例中的路由中,但我不确定它是什么。它是某种路由框架吗?如果这些是显而易见的问题,我深表歉意,我对玩 jsfiddle + javascript[=12 比较陌生=]

这称为立即调用函数表达式 (IIFE),这些是参数(jQuery、Firebase、路径),它们在调用结束时发送:

}(window.jQuery, window.Firebase, window.Path))

有关立即调用函数的更多信息,请查看以下内容link

http://benalman.com/news/2010/11/immediately-invoked-function-expression/

在底部,您可以看到传递给这些参数的内容。

(window.jQuery, window.Firebase, window.Path)

这只是一种确保这些变量在所需范围内引用正确对象的方法。

是的,Path 用于路由。看看 ~300 行,你会看到。

有很多评论和注释,您应该继续阅读脚本。

旁注,这与 JSFiddle 没有特别的关系。 JSFiddle 只是一个代码编辑器平台,有很多很多类似的平台:JSBin, CodePen, WebDevOut, Plunker - 不胜枚举。


关于您的评论,扩展此答案。如果单击左侧的 External Resources 选项卡,您将获得已添加到环境中的所有脚本和资源的列表。大多数时候,脚本会在 global 对象上创建某种 namespace 对象——在浏览器中,全局对象是 window - 所以你最终得到 window.jQuerywindow.Pathwindow.Firebase,等等。由于每个作用域都可以访问全局作用域,通常你只会看到 jQuery(或 $)在函数内部自由使用,因为它假设全局引用不会改变 - 但如果它改变了怎么办?如果另一个库或工具在您的程序中间覆盖了该命名空间怎么办?那会破坏你所有的引用!

window.jQuery 传递给名为 jQuery 的参数的函数的全部意义在于简单地确保在该函数的范围内 jQuery 始终表示您的想法它应该,因为全局引用 (window.jQuery) 可能会在不知不觉中被其他一些库覆盖。您不关心命名空间现在已经或可能被重写,因为您已经建立了对该原始对象的引用。

Path 对象由此库提供:pathjs

进一步阅读:

这是一个立即调用的匿名函数。参数在函数的末尾设置。这是一个非常简单的例子:

(function(a, b, c) {
     // a = 1, b = 2, c = 3
})(1, 2, 3);

这用于避免填充全局命名空间/避免暴露 functions/parameters。

在该 jsfiddle 页面上,如果您转到边栏并单击 "External Resources",那么您将看到参数的来源。