Ready vs 自调用匿名函数

这两者之间的区别是什么。

  1. $(document).ready(function(){ ... });

  2. (function(){ ... })();

这两个函数是同时调用的吗? 我知道,当整个 HTML 页面由浏览器呈现时,document.ready 将被触发,但是第二个函数(自我调用匿名函数)会怎么样呢。它是等待浏览器完成呈现页面,还是在遇到页面时调用它?

84631 次浏览

在“构造”DOM 之后运行 document.ready,自调用函数立即运行——如果在构造 DOM 之前插入到 <head>中的话。

一旦在 Javascript 中遇到 (function(){...})();,就会立即执行它。

加载文档后将执行 $(document).ready()$(function(){...});$(document).ready()的一个快捷方式,它的作用与 $(document).ready()完全相同。

  • $(document).ready(function(){ ... }); 或短 $(function(){...});

    这个函数在 DOM is ready时调用,这意味着,你可以从 疑问元素开始,例如。.ready()将在不同的浏览器上使用不同的方法来确保 DOM 真的准备好了。

  • (function(){ ... })();

    这只不过是一个函数,当浏览器解释你的 ecma-/javascript时,就会自己出现尽快。因此,在这里成功执行 DOM elements的可能性非常小。

  1. $(document).ready(function() { ... });只是将该函数绑定到文档的 ready事件,因此,正如您所说的,当文档加载时,事件触发器。

  2. (function($) { ... })(jQuery);实际上是 Javascript 的一个构造,这段代码所做的就是将 jQuery对象作为参数传递给 function($)并运行函数,因此在该函数内部,$总是引用 jQuery对象。这可以帮助解决名称空间冲突等等。

因此,# 1在加载文档时执行,# 2立即运行,使用名为 $jQuery对象作为速记。

当 DOM (文档对象模型)准备好执行 JavaScript 代码时,将执行以下代码。

$(document).ready(function(){
// Write code here
});

以上代码的简称是:

$(function(){
// write code here
});

下面显示的代码是一个自我调用的匿名 JavaScript 函数,将在 浏览器解释说:

(function(){
//write code here
})();   // It is the parenthesis here that call the function.

下面所示的 jQuery 自调用函数将全局 jQuery 对象作为参数传递 这使得 $能够在自我调用函数中本地使用,而不需要 遍历全局范围以获得定义。JQuery 不是唯一使用 $的库,因此 减少潜在的命名冲突。

(function($){
//some code
})(jQuery);