これら2つの違いは何ですか:
$(function () {
// do stuff
});
と
(function () {
// do stuff
})();
これら2つの違いは何ですか:
$(function () {
// do stuff
});
と
(function () {
// do stuff
})();
document.ready
1 つ目は、jQuery を使用して関数をイベントにバインドします。2 つ目は、関数を宣言してすぐに実行します。
$(function() {});
のjQueryショートカットです
$(document).ready(function() {
/* Handler for .ready() called. */
});
While(function() {})();
は、即座に呼び出される関数式、または IIFE です。これは、式 (ステートメントではない) であり、作成後すぐに呼び出されることを意味します。
どちらも無名関数ですが、(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();
唯一の違いは、グローバル名前空間を汚染していないことです。
1 つは jquery$(document).ready
関数で、もう 1 つは自分自身を呼び出す無名関数です。
$(function () {
// It will invoked after document is ready
});
ドキュメントの準備ができたらこの関数を実行すると、HTML 全体が実行前に読み込まれますが、2 番目のケースでは、関数が作成された直後に呼び出されます。
(function () {
// It will invoked instantly after it is created
})();