为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery document.ready vs自调用匿名函数

jQuery document.ready vs自调用匿名函数

牛魔王的故事 2019-08-26 14:06:13
jQuery document.ready vs自调用匿名函数这两者有什么区别。$(document).ready(function(){ ... });(function(){ ... })();这两个函数同时被调用吗?我知道,当浏览器呈现整个HTML页面时会触发document.ready,但第二个函数(自调用匿名函数)会怎样。是否等待浏览器完成呈现页面,或者只要遇到它就会调用它?
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

当DOM(Document对象模型)准备好执行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对象作为参数传递给function($)。这使得$可以在自调用函数中本地使用,而无需遍历定义的全局范围。jQuery不是唯一可以使用的库$,因此可以减少潜在的命名冲突。


(function($){

  //some code

})(jQuery);


查看完整回答
反对 回复 2019-08-26
?
FFIVE

TA贡献1797条经验 获得超6个赞

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

    当这个函数被调用时DOM is ready,你可以开始查询元素。.ready()将在不同的浏览器上使用不同的方式来确保DOM真的准备就绪。

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

    这只不过是一个在浏览器解释时尽快调用自身的函数ecma-/javascript。因此,你不太可能成功地在DOM elements这里采取行动。


查看完整回答
反对 回复 2019-08-26
?
白衣非少年

TA贡献1155条经验 获得超0个赞

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

  2. (function($) { ... })(jQuery);实际上是Javascript的构造,并且所有代码片段都将jQuery对象function($)作为参数传递并运行函数,因此在该函数内部$始终引用该jQuery对象。这有助于解决命名空间冲突等问题。

因此,#1在文档加载时执行,而#2立即运行,jQuery对象名为$shorthand。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 624 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信