このコード:
<script type="text/javascript">
someMethod1();
$(function () {
someMethod2();
});
</script>
これら 2 つの召しの違いは何ですか? 最初の呼び出しをいつ行い、2 番目の呼び出しをいつ行うか? メソッドの実行順序は?
このコード:
<script type="text/javascript">
someMethod1();
$(function () {
someMethod2();
});
</script>
これら 2 つの召しの違いは何ですか? 最初の呼び出しをいつ行い、2 番目の呼び出しをいつ行うか? メソッドの実行順序は?
someMethod1();
これは、ドキュメントの準備が整う前または後に呼び出される可能性があり、jQuery は必要ありません。これがページの最後にある場合は、すべてのコントロールの準備ができたときに呼び出されますが、中間にある場合は、レンダリングされたコントロールのみを認識します。
$(function () {
someMethod2();
});
これは、ドキュメントの準備が整い、すべてのコントロールが準備/レンダリングされた後に常に呼び出されます。これには jQuery が必要です。準備完了について詳しくは、こちらをご覧ください。これは、他の関数呼び出しを理解するのにも役立ちます。
someMethod1 はすぐに実行されます
someMethod2 は、コードを実行する前に、外部 JavaScript ファイル (他のスクリプト、または他のサイトからの)、CSS、およびその他のリソースを含むページ全体が読み込まれるのを待ちます。
$(function () {
//run after page loads
});
Method2 は、次の形式で提供されることがあります。
$(document).ready(function() {
// Handler for .ready() called.
});
スクリプト ブロック内のステートメントは、発生順に実行されます。話しやすくするために、行に番号を付けて、余分な改行を 1 つか 2 つ挿入すると、次のようになります。
1 someMethod1();
2
3 $(
4 function () {
5 someMethod2();
6 }
7 );
行 1someMethod1()
が最初に実行されます。
次に、行 3$()
が実行されます。ここで、パラメーター to$()
は、行 4 から 6 で定義された無名関数です。この$()
関数は、後でドキュメントの準備完了イベントに応答して実行される無名関数をスケジュールします。つまり、無名関数はその時点では実行されません。
最後に、ドキュメントの準備が整うと、4 行目から 6 行目の無名関数が実行されます。これは、5 行目someMethod2()
が発生することを意味します。