自调用函数jQuery
Self-invoking function jQuery
我注意到,在某些地方,jQuery代码被包装在一个自调用函数中,如下所示。为什么要这样做,在什么情况下这样做有用,在哪些情况下是不必要的样板?
function( $ ) {
...
}( jQuery );
简短的答案:防止变量名称冲突。它并不总是需要的,但为了创建无冲突的可重用代码,它是一种良好的实践。
答案很长:在javascript中,$符号只是另一个变量。jQuery之所以使用它,是因为它是一种很好的简写,而不必每次都键入jQuery,但任何其他代码(包括其他库)也是如此。
为了防止与同一范围内变量的其他用途发生冲突(在本例中为"全局"范围内的$),通常将代码封装在自调用函数中,并将"无冲突"变量作为函数参数传递。这样就创建了一个新的作用域,您的变量不会干扰该变量的其他使用。通过这种方式,您可以传递完整的命名变量&在匿名函数中,可以将它与您想要的任何名称一起使用。
因此,在创建无冲突的可重用代码时,最好使用以下方法:
(function( $ ) {
...
})( jQuery );
沿着这些线,你还会看到以下格式:
(function( $, window, undefined ) {
...
})( jQuery, window );
在本例中,undefined
仅用于指示不再向函数传递参数的可读性。
如果您想避免使用$
的冲突
function( $ ) {
...
}( jQuery );
在这个函数内部,您可以使用$
,而不必担心它在函数外部的使用,因为在该函数内部,$
总是指jQuery
对象。
这在创建jQuery插件时很有帮助,你会看到jQuery插件使用这种功能来避免与其他插件发生冲突。
参考:
http://learn.jquery.com/plugins/basic-plugin-creation/
在函数范围内,$
是与任何其他全局$
不冲突的局部变量。
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何从jquery函数返回变量
- 如何将具有文本类型值的var放入jQuery函数中
- Jquery函数在错误的时间提交
- 锚链接无法使用.slideUp jquery函数
- 重新分解jQuery函数
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何向这个javascript/jquery函数添加参数
- 添加类来触发jquery函数
- 更改智能表中的页面将停止JQuery函数的工作
- 使用每500ms运行一次的jquery函数是个好主意吗
- jQuery函数不能只在一个页面上工作
- 如何将jquery函数链接到vanilla选择器
- 仅在小型设备上调用jQuery函数
- 如何将jquery函数仅应用于大屏幕
- 奇怪的jquery函数行为
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 在jquery函数内部设置来自jquery函数的var;t运行
- 从Jquery函数中获取一个变量