jQuery DOM就绪,JavaScript执行

jQuery DOM ready and JavaScript execution

本文关键字:JavaScript 执行 就绪 DOM jQuery      更新时间:2024-05-26

下面的剪切是如何工作的?

$((function () {
    alert('I''m ready!')
}()));

据我所知:

  1. 执行jQuery.ready()-只有在加载DOM后才会触发
  2. 它被包装为保持匿名(如果它被传递给$,有意义吗?)
  3. 函数被定义并立即执行

以下剪辑是如何工作的?

可以说,事实并非如此。

让我们使用一个中间变量将代码正在做的两件事分开:

// First
var x = (function () {
    alert('I''m ready!')
}());
// Then:
$(x);

第一位定义一个函数并立即调用它,从而显示alert。函数调用的返回值存储在x中。由于函数不返回任何内容,因此调用它的结果是undefined.

然后,第二个位调用传入undefined的jQuery的$函数,该函数基本上不会执行任何操作。

你可能是这个意思:

$(function () {
    alert('I''m ready!')
});

请注意,在调用它的函数之后没有()

// First
var x = function () {
    alert('I''m ready!')
};
// Then:
$(x);

这里发生的事情是,函数被定义,而没有被调用;对该函数的引用被存储在CCD_ 7中。

然后我们调用$并传入该函数引用,这是$(document).ready(x)的快捷方式。

所以这个代码:

$(function () {
    alert('I''m ready!')
});

首先定义一个函数(不调用它),然后将对该函数的引用传递到$中。

稍后,当DOM准备就绪时,jQuery将调用该函数。

这不会创建一个文档就绪处理程序。jQuery的$()函数根据您传递给它的内容执行不同的操作,在本例中,您传递的是undefined

内部匿名函数表达式:

(function () {
    alert('I''m ready!')
}())

由于后面有(),立即执行,然后将其返回值传递给$()-它没有显式返回任何内容,因此返回值为undefined(如上所述)。

如果你真的想在文档准备好后发出警报,请删除(),如下所示:

$(function () {
    alert('I''m ready!')
});
$(function() {
console.log( "ready!" );
});

是的缩写

$( document ).ready(function() {
console.log( "ready!" );
});

看看这个http://learn.jquery.com/using-jquery-core/document-ready/