Javascript 自执行函数是否在dom就绪时运行?

Javascript 自执行函数是否在dom就绪时运行?,javascript,jquery,function,Javascript,Jquery,Function,在我听说自动执行函数之前,我总是这样做: $(document).ready(function() { doSomething(); }); function doSomething() { // blah } 一个自动执行函数会有同样的效果吗?它会在dom上运行吗 (function doSomething($) { // blah })(jQuery); 没有。当Javascript引擎找到一个自执行函数时,它就会运行 但是,如果您将所有代码都放在文档末尾的关闭标记(

在我听说自动执行函数之前,我总是这样做:

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

function doSomething()
{
   // blah
}
一个自动执行函数会有同样的效果吗?它会在dom上运行吗

(function doSomething($) {
   // blah
})(jQuery);

没有。当Javascript引擎找到一个自执行函数时,它就会运行

但是,如果您将所有代码都放在文档末尾的关闭标记(即)之前,那么您就不必等待DOM就绪,因为您已经自动通过了该标记


如果您只想确定
$
变量的范围,而不想将代码移到页面底部,则可以使用以下方法:

jQuery(function($){
    // The "$" variable is now scoped in here
    // and will not be affected by any code
    // overriding it outside of this function
});

不会,它将在JavaScript文件执行后立即运行。

不,自动执行的JavaScript函数就在那里运行

如果要创建DOM就绪函数,请编写以下代码:

$(function() {
  // this will run on DOM ready
});
这是以下内容的简写:

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

不,自执行函数在代码中“声明”后立即运行。即使它位于外部.js文件中

在您的示例中,可能会执行函数,jQuery的值为undefined。如果希望代码在DOMReady上执行,请继续使用

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

甚至

window.onload = function(){
    doSomething();
}
$(document).ready(函数(){…})只是将该函数绑定到文档的就绪事件,因此,正如您所说,当文档加载时,事件将触发

(function($) { ... })(jQuery);
实际上是一个Javascript构造,这段代码所做的就是将jQuery对象作为参数传递到函数($)中并运行函数,因此在该函数中,$始终指jQuery对象。这有助于解决名称空间冲突等问题

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

$(document).ready(function(){ ... }); or short $(function(){...});
当DOM就绪时调用此函数,这意味着您可以开始查询元素,例如。ready()将在不同的浏览器上使用不同的方法来确保DOM真正就绪

(function(){ ... })();
这只是一个在浏览器解释ecma-/javascript时尽快调用自身的函数。因此,您不太可能在这里成功地处理DOM元素


如果您未处于移动模式,则可能重复“是”,它们位于张贴区的上方。@KARASZI是对的。DOM就绪在加载之前触发。onLoad仅在加载所有内容(图像等)时触发:。
(function(){ ... })();