这两个有什么区别?
$(document).ready(function(){ ... });
(function(){ ... })();
这两个函数会同时调用吗?我知道,当整个HTML页面被浏览器渲染后,document.ready将被触发,但是对于第二个函数(自执行匿名函数),它会等待浏览器完成页面渲染还是在遇到它时立即调用?
这两个有什么区别?
$(document).ready(function(){ ... });
(function(){ ... })();
这两个函数会同时调用吗?我知道,当整个HTML页面被浏览器渲染后,document.ready将被触发,但是对于第二个函数(自执行匿名函数),它会等待浏览器完成页面渲染还是在遇到它时立即调用?
$(document).ready(function(){ ... });
或简写为 $(function(){...});
当 DOM 准备就绪时,将调用此函数。这意味着您可以开始查询元素。.ready()
在不同的浏览器上使用不同的方式来确保 DOM 确实已经准备好。
(function(){ ... })();
这只是一个函数,在浏览器解释您的 ECMAScript / JavaScript 时尽可能快地调用自身。因此,在这里成功操作 DOM 元素的可能性非常小。
(function(){ ... })();
,不是所有的JS代码都会尽快运行吗?如果你在SIAF内部或外部使用alert()
,效果不是一样的吗? - skube(function(){...})();
会在JavaScript代码中遇到时立即执行。
$(document).ready()
会在文档加载完成后执行一次。$(function(){...});
是$(document).ready()
的简写形式,两者执行的是完全相同的操作。
当文档对象模型(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 对象作为参数传递给 function($)
。这使得 $
可以在自执行函数内部本地使用,而无需遍历全局作用域来查找定义。jQuery 不是唯一使用 $
的库,因此这减少了潜在的命名冲突。
(function($){
//some code
})(jQuery);
$(document).ready(function() { ... });
只是将该函数绑定到文档的"ready"事件上,所以当文档加载时,事件触发。
(function($) { ... })(jQuery);
实际上是javascript的一个构造形式,这段代码的作用就是将jQuery
对象作为参数传递给function($)
并运行函数,因此在该函数内部,$
始终指向jQuery
对象。这可以帮助解决命名空间冲突等问题。
因此,#1是在文档加载时执行,而#2是立即运行的,jQuery
对象被命名为$
以便使用缩写。
document.ready会在DOM构建完成后运行。而自执行函数会立即运行 - 如果将其插入到<head>
标签中,在DOM构建之前就会运行。
<head>
中,并且在初始 DOM 构建后规则并没有改变。 - Anurag
$(function() {});
相当于$(document).ready(function() {});
。 - Ian Henry