javascript - 自调用函数 jQuery

标签 javascript jquery self-invoking-function

<分区>

我注意到在某些地方,jQuery 代码被包裹在一个自调用函数中,如下所示。为什么这样做,在什么情况下有用,在什么情况下是不必要的样板文件?

function( $ ) {
  ...
}( jQuery );

最佳答案

简短的回答:防止变量名冲突。它并不总是需要的,但是为了创建无冲突的可重用代码的良好实践。

长答案:在 javascript 中,$ 符号只是另一个变量。 jQuery 使用它是因为它是一个很好的速记,而不必每次都输入 jQuery,但任何其他代码(包括其他库)也可以。

为了防止与同一范围内的变量的其他使用发生冲突(在本例中为 $ 在“全局”范围内),通常将代码包装在具有“无冲突”变量的自调用函数中作为函数参数传递。然后这会创建一个新范围,您的变量不会干扰该变量的其他用途。这样你就可以传递全名变量并在匿名函数中使用你想要的任何名称。

因此,在创建无冲突的可重用代码时,最好使用此方法:

(function( $ ) {
  ...
})( jQuery );

沿着这些线,您还将看到以下格式:

(function( $, window, undefined ) {
  ...
})( jQuery, window );

在这种情况下,undefined 仅用于指示没有更多参数传递给函数的可读性。

关于javascript - 自调用函数 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17319718/

相关文章:

javascript - AngularJS - ng-show 和 ng-click 不起作用

javascript - Event.observe(window, "load", function(){..} v/s window.onload = function(){..}

javascript - 简单的按键事件不能在 jquery 上正常工作

javascript - 如何强制 href 链接为绝对链接?

javascript - 在 HTML 中加载前 3 个图像元素,单击 “load more” 以显示接下来的 2 个元素

jquery - 一起使用 ASP.Net AJAX 和 JQuery 的任何缺点

javascript - 从 AnythingSlider v1.2 迁移到最新版本 (v1.8.17)

javascript - (function(){})() 和 (function(){}()) 之间的区别,自调用匿名函数

javascript - 2个自调用的javascript函数运行