window.jQuery 还是 jQuery?
Posted
技术标签:
【中文标题】window.jQuery 还是 jQuery?【英文标题】:window.jQuery or jQuery? 【发布时间】:2013-03-28 17:41:02 【问题描述】:(function($)
// plugin code
)(window.jQuery);
好像这段代码的效果几乎一样,为:
(function($)
// plugin code
)(jQuery);
我应该使用window.jQuery
还是jQuery
作为函数参数?有意义吗?
Zepto 也是如此,我看到很多人在他们的插件中使用 window.Zepto
,但代码也仅适用于 Zepto
。
【问题讨论】:
【参考方案1】:有区别。如果未定义 jQuery,!!window.jQuery
将返回 false,而如果未定义 jQuery,!!jQuery
将抛出错误。
【讨论】:
【参考方案2】:没有区别,window
是客户端javascript中的super全局对象,全局上下文中定义的所有函数和变量都是window
的方法和属性对象。
【讨论】:
"窗口是的全局对象"? @Beetroot-Beetroot 你的意思是我应该写 window is the global object 而不是 window is a global object? 是的……嗯,这是一个建议。 @Beetroot-Beetroot 这是一个很好的建议,但我认为它可能会让一些读者感到困惑。一个全局对象,其他全局标识符是它的方法/属性! :) 有一个区别;如果 jQuery 不在页面上,则使用未完全解析的jQuery
将引发错误,而 window.jQuery
将返回 undefined
。所以...如果您正在测试是否存在 jQuery,那么您应该使用 window.jQuery
而不是 jQuery
。【参考方案3】:
window.jQuery
是在窗口全局对象中定义的对象。 window
可以跳过。当跳过它应该是我们window.jQuery。大多数人不使用 window.jQuery 而是使用jQuery
或简单地使用$
并且更容易理解也减少了源代码大小。
window.jQuery = window.$ = jQuery;
您可以通过here阅读更多内容。
【讨论】:
【参考方案4】:就像$(document).ready(function()..)
和$(function()..)
一样。
用于设置 jQuery 闭包。其目的是允许变量 $ 用作 jQuery 的快捷方式,而不会与也使用 $ 作为变量名的其他库和自定义函数发生冲突
jQuery 插件作者经常使用这种技术来授权他们的插件。更多信息请查看documentation。
【讨论】:
以上是关于window.jQuery 还是 jQuery?的主要内容,如果未能解决你的问题,请参考以下文章