いくつかの日付ピッカーを設定する必要がありdateFormat
ます。
を定義する最良の方法は何dateFormat
ですか?
次のような単純なメソッドを定義する
function dateFormat() {
return 'yy-mm-dd';
}
またはグローバル変数のような
dateFormat = 'yy-mm-dd'
?
いくつかの日付ピッカーを設定する必要がありdateFormat
ます。
を定義する最良の方法は何dateFormat
ですか?
次のような単純なメソッドを定義する
function dateFormat() {
return 'yy-mm-dd';
}
またはグローバル変数のような
dateFormat = 'yy-mm-dd'
?
わかりました、あなたのコメントによると:
@MarkusHofmann、返信ありがとうございます。jquery でグローバル変数をいつ使用するか、例があれば教えてください。
… jQueryでのグローバル変数の使用に関する情報を探していました。
ここで、調べたことをまとめます。この回答の最後にソースがあります。
通常、グローバル変数は省略して定義var
します(質問で行ったように):
dateFormat = 'yy-mm-dd';
しかし!!!省略var
すると、暗黙的なグローバルが生成されます。これは悪いことであり、strict モードではエラーが発生します。
ただし、製品コードでグローバル変数を生成する必要がある場合(これは避けるべきです)、常に明示的に宣言します。
window.dateFormat = 'yy-mm-dd';
上記のアプローチを使用して、window / jQuery オブジェクトの名前空間内にグローバル変数を作成できます。
ウィンドウ オブジェクト:
window.myNameSpace = {
dateFormat = 'yy-mm-dd',
...
};
jQuery オブジェクト:
$.myNameSpace = {
dateFormat = 'yy-mm-dd',
...
};
ただし、名前空間の命名には注意してください。プラグインなどから別の同等の名前空間がある場合、名前の競合が発生する可能性があります。グローバルを単一のグローバル名前空間内にカプセル化することをお勧めします。これにより、jQuery から独立し、名前空間が乱雑にならなくなります。
グローバルを単一のグローバル名前空間内にカプセル化します。
var MyNameSpace = {}; // The global object container
MyNameSpace.dateFormat = 'yy-mm-dd';
Closureを使用してグローバルまたはプライベート メンバー変数を定義することもできます。
この長い話を短くすると、 globalsを避けるのがベスト プラクティスです。
私の答えにもう 1 つ追加したいのですが、jQuery のプラグインを作成するときは、すべてのコードをすぐに呼び出される関数式(IIFE)内に配置し、関数jQueryを渡し、パラメーターに$という名前を付けます。このクロージャーにより、独自のプライベート変数を持つことができ、jQuery$
エイリアスを保護できます。
(function( $ ){
...YOUR CODE HERE...
})( jQuery );
Ben Alman のサイトに、IIFE に関する詳細情報を提供する優れた投稿があります。
StackOverflow でここで読む価値のある素晴らしい答えを含む IIFE 関連の質問もあります:
Using 'window', 'document' and 'undefined' as argument in anonymous function that wraps a jQuery plugin