jqueryを書く前に、彼らは常に私たちを使用することをお勧めします
$( document ).ready(function() {});
すべてのコードをこの関数内に配置しますが、特定のチュートリアルでは代わりにこれを使用していることに気付きました
(function($){})(jQuery)
と
(function($){}(jQuery));
実際の違いは何ですか?
jqueryを書く前に、彼らは常に私たちを使用することをお勧めします
$( document ).ready(function() {});
すべてのコードをこの関数内に配置しますが、特定のチュートリアルでは代わりにこれを使用していることに気付きました
(function($){})(jQuery)
と
(function($){}(jQuery));
実際の違いは何ですか?
$( document ).ready(function() { YOUR CODE });
YOUR CODE
1. このコードは、jQuery の on document ready ハンドラーでラップされます。これにより、スクリプトの実行を開始する前に、すべての HTML が確実に読み込まれます。また、YOUR CODE
匿名関数 (クロージャー) の一部であるため、これによりグローバル スコープがクリーンに保たれます。
...
$(function(){ YOUR CODE });
2. これは #1 と同じですが、省略形を使用しています。
...
(function($){ YOUR CODE })(jQuery)
3. これは、on ready ハンドラーに何もラップしないため、これまでに読み込まれた HTML に関係なく、すぐに実行されます。ただし、匿名関数でラップされているYOUR CODE
ため、jQuery オブジェクトを で参照できます$
。
...
(function($){ YOUR CODE }(jQuery));
4. これは #3 と同じです。
$(document).ready(function() {//when document is read
と
$(function() {
は同じもので、2 番目は単なる省略形です
あなたもできる
$(window).load(function() {
//ウィンドウ読み込みイベントは、すべてのフレーム、オブジェクト、および画像を含む完全なページが完全に読み込まれる少し後に実行されます。
(function($){})(jQuery)
自己実行匿名関数です
したがって、基本的には、jQuery が $ 変数/関数を持つ可能性のある他の JavaScript ライブラリとうまく連携できるようにする匿名関数です。また、すべての jQuery プラグイン コードがこの無名関数でラップされていることにも注意してください。
最初のものは、メソッドを で実行しdocument
ready
ます。詳細はこちらをご覧ください。
(function($){/*Your code*/})(jQuery)
最後の 2 つは、コード内の変数/関数宣言をローカル スコープにカプセル化し、jQuery オブジェクトをパラメーターとして取得します。このアプローチは、宣言でグローバルスコープを散らかさないために使用されます。つまり、変数をローカライズします。
最後の 2 つの違いは、最初の 1 つが追加の括弧で関数を区切っており、視覚的にわかりやすくしていることです。
基本的に、これはJavaScript でモジュールを構築する方法であり、コードの 1 つのブロックが他のブロックに影響を与えないようにします。
詳細については、js 開発パターンに関する優れた記事を参照してください。
例:
var f = function (str) {
window.alert(str);
};
var name = "John Doe";
f();
機能的には同じです
(function (w) {
var f = function (str) {
w.alert(str);
};
var name = "John Doe";
f();
})(window);
ご覧のとおり、最初のものはグローバル スコープで変数を作成し、他のスクリプトに影響を与える可能性がありますが、2 つ目はすべてをローカルで行います。さらに、2 番目の例では、参照の名前を に変更し、window
を介してメソッドで使用できるようにしましたw
。あなたの例でも同じことが起こります。
2 つの js ライブラリがあり、両方ともエイリアスの省略形を使用していると想像してください$
。コードのどこで参照されるかはわかりません。一方、jQuery
常にjQuery
ライブラリを参照します。そして、あなたの場合、最後の2つのメソッドは、それ$
が名前が変更されたjQuery
オブジェクトであり、別のライブラリからのものではないことを確認するだけです.
最初のものはドキュメントの準備が整う$
とすぐに関数を実行し、他のものはその関数内のエイリアス記号を介して jQuery にアクセスできるようにする IIFE のものです。
var $ = 'other plugin';
(function($){
alert($); // jQuery here
})(jQuery);