了解一些jsfiddle代码 - 需要一些解释

时间:2015-06-25 07:53:28

标签: javascript jsfiddle

我正在考虑围绕Firebase身份验证的JSFiddle中的一些代码

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

但有一些事情我不太关注代码...... 在顶部声明的函数

(function (jQuery, Firebase, Path) {

这是将服务/库注入jsfiddle的某种方式吗?还没有看过像之前的例子......还有谁能告诉我这个方法签名中的路径是什么?...我理解它在路由中的用途这个例子,但我不完全确定它是什么..是它的某种路由框架...道歉,如果这些是显而易见的问题,我相对较新的jsfiddle + javascript

3 个答案:

答案 0 :(得分:2)

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

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

有关立即调用的函数的更多信息,请查看以下链接

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

答案 1 :(得分:2)

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

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

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

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

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

旁注,这与JSFiddle没有任何关系。 JSFiddle只是一个代码编辑器平台,有很多很多很喜欢它:JSBinCodePenWebDevOutPlunker - 列表继续。

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

Firebase resources

window.jQuery传递给名为jQuery的参数的函数的全部要点是确保在该函数的范围内jQuery始终表示您认为它应该是什么,因为全局引用(window.jQuery)可能在不知不觉中由其他库写入。您并不关心命名空间是否已经或现在可以写入,因为您已经建立了对该原始对象的引用。

此库提供Path对象:pathjs

进一步阅读:

答案 2 :(得分:2)

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

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

这用于避免填充全局命名空间/以避免暴露函数/参数。

在该jsfiddle页面上,如果您转到侧栏并单击“外部资源”,您将看到参数的来源。