自调用函数jQuery

Self-invoking function jQuery

本文关键字:jQuery 函数 调用      更新时间:2023-09-26

我注意到,在某些地方,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/

在函数范围内,$是与任何其他全局$不冲突的局部变量。