40

这两者有什么区别:

$(function () {
    // do stuff
});

(function () {
    // do stuff
})();
4

5 回答 5

54

第一个使用 jQuery 将函数绑定到document.ready事件。第二个声明并立即执行一个函数。

于 2011-09-30T18:33:51.750 回答
26

$(function() {});是一个 jQuery 快捷方式

 $(document).ready(function() { 
     /* Handler for .ready() called. */ 
 });

While(function() {})();是一个即时调用的函数表达式,即 IIFE。这意味着它是一个表达式(不是语句),它在创建后立即被调用。

于 2011-09-30T18:33:23.197 回答
5

一个是 jquery$(document).ready函数,另一个是调用自身的匿名函数。

于 2011-09-30T18:33:18.923 回答
5

它们都是匿名函数,但(function(){})()会立即调用,并$(function(){})在文档准备好时调用。

jQuery 像这样工作。

window.jQuery = window.$ = function(arg) {
    if (typeof arg == 'function') {
        // call arg() when document is ready
    } else {
       // do other magics
    }
}

因此,您只需调用 jQuery 函数并传入一个函数,该函数将在文档就绪时调用。

“自执行匿名函数”与执行此操作相同。

function a(){
    // do stuff
}
a();

唯一的区别是您没有污染全局命名空间。

于 2011-09-30T18:47:27.033 回答
2
$(function () {
    // It will invoked after document is ready
});

一旦文档准备就绪,此函数执行意味着整个 HTML 应该在其执行之前加载,但在第二种情况下,该函数在创建后立即调用。

(function () {
    // It will invoked instantly after it is created
})();
于 2016-11-16T08:15:49.903 回答