40

これら2つの違いは何ですか:

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

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

5 に答える 5

54

document.ready1 つ目は、jQuery を使用して関数をイベントにバインドします。2 つ目は、関数を宣言してすぐに実行します。

于 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

どちらも無名関数ですが、(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 に答える
5

1 つは jquery$(document).ready関数で、もう 1 つは自分自身を呼び出す無名関数です。

于 2011-09-30T18:33:18.923 に答える
2
$(function () {
    // It will invoked after document is ready
});

ドキュメントの準備ができたらこの関数を実行すると、HTML 全体が実行前に読み込まれますが、2 番目のケースでは、関数が作成された直後に呼び出されます。

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