これら2つの違いは何ですか。
$(document).ready(function(){ ... });
(function(){ ... })();
これら両方の関数が同時に呼び出されますか?HTMLページ全体がブラウザによってレンダリングされるときにdocument.readyがトリガーされることはわかっていますが、2番目の関数(匿名関数の自己呼び出し)についてはどうでしょうか。ブラウザーがページのレンダリングを完了するのを待つのか、それとも遭遇するたびに呼び出されるのか?
これら2つの違いは何ですか。
$(document).ready(function(){ ... });
(function(){ ... })();
これら両方の関数が同時に呼び出されますか?HTMLページ全体がブラウザによってレンダリングされるときにdocument.readyがトリガーされることはわかっていますが、2番目の関数(匿名関数の自己呼び出し)についてはどうでしょうか。ブラウザーがページのレンダリングを完了するのを待つのか、それとも遭遇するたびに呼び出されるのか?
回答:
$(document).ready(function(){ ... });
または短い $(function(){...});
この関数は、たとえば、要素のクエリDOM is ready
を開始できるときに呼び出されます。異なるブラウザで異なる方法を使用して、DOMが本当に準備ができていることを確認します。.ready()
(function(){ ... })();
これは、ブラウザがを解釈しているときにできるだけ早く自分自身を呼び出す関数に他なりませんecma-/javascript
。そのため、DOM elements
ここで問題なく対処できる可能性はほとんどありません。
(function(){ ... })();
JSコードができるだけ早く実行されないという点で混乱しています。あなたが言ったとしたらalert()
、SIAFの内部でも外部でも、効果は同じではないでしょうか?
$(document).ready(function() { ... });
単にその関数をready
ドキュメントのイベントにバインドするだけなので、ドキュメントが読み込まれると、イベントがトリガーされます。
(function($) { ... })(jQuery);
実際にはJavascriptの構成要素であり、そのコードの一部はjQuery
オブジェクトをfunction($)
パラメーターとして渡して関数を実行するだけなので、その関数内では$
常にjQuery
オブジェクトを参照します。これは、名前空間の競合などを解決するのに役立ちます。
したがって、#1はドキュメントのロード時に実行され、#2はjQuery
オブジェクト$
が省略形ですぐに実行されます。
次のコードは、DOM(ドキュメントオブジェクトモデル)がJavaScriptコードを実行する準備ができると実行されます。
$(document).ready(function(){
// Write code here
});
上記のコードの略記は次のとおりです。
$(function(){
// write code here
});
以下に示すコードは、自己呼び出しの匿名JavaScript関数であり、ブラウザーがそれを解釈するとすぐに実行されます。
(function(){
//write code here
})(); // It is the parenthesis here that call the function.
以下に示すjQuery自己呼び出し関数は、グローバルjQueryオブジェクトを引数としてに渡しますfunction($)
。これにより$
、定義のグローバルスコープを走査する必要なく、自己呼び出し関数内でローカルに使用できます。jQueryはを使用する唯一のライブラリではない$
ため、これにより、潜在的な名前の競合が減少します。
(function($){
//some code
})(jQuery);
document.readyは、DOMが「構築」された後に実行されます。自己起動関数は即座に実行され<head>
ます-DOMが構築される前にに挿入された場合。
<head>
。また、最初のDOMが構築された後もルールは変わりません。
$(function() {});
は価値があるため、に相当します$(document).ready(function() {});