[解決済み] "var FOO = FOO || {}"とは何ですか?(変数またはその変数に空のオブジェクトを代入する) とは、Javascript ではどういう意味ですか?
質問
オンラインのソースコードを見ていたら、いくつかのソースファイルの一番上にこのようなものがありました。
var FOO = FOO || {};
FOO.Bar = …;
しかし、私は何のために
|| {}
が何をするのかがわかりません。
知っている
{}
と同じです。
new Object()
であり、私は
||
は "すでに存在する場合はその値を使用し、そうでない場合は新しいオブジェクトを使用するようなものです。
なぜ、ソースファイルの一番上にこれがあるのでしょうか?
どのように解決するのですか?
の意図について、あなたの推測は
|| {}
はかなり近いです。
ファイルの先頭で見られるこの特定のパターンが 名前空間 すなわち、グローバルオブジェクトを過度に汚染することなく関数や変数を作成することができる名前付きオブジェクトを作成するために使用されます。
その理由は なぜ が使用される理由は、2 つ (またはそれ以上) のファイルがある場合に使用するためです。
var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func1 = {
}
と
var MY_NAMESPACE = MY_NAMESPACE || {};
MY_NAMESPACE.func2 = {
}
の両方が同じ名前空間を共有している場合、2 つのファイルがどの順番で読み込まれるかは問題ではなく、やはり
func1
と
func2
の中で正しく定義されています。
MY_NAMESPACE
オブジェクトの中で正しく定義されています。
最初に読み込まれるファイルは
を作成します。
を作成します。
MY_NAMESPACE
オブジェクトを作成し、その後に読み込まれたファイルは
を増やします。
オブジェクトを拡張します。
有用なことに、これはまた
非同期
の読み込みが可能になり、ページの読み込み時間を短縮することができます。 もし
<script>
タグに
defer
属性が設定されていると、どの順番で解釈されるか分からないので、上記のようにこの問題も修正されます。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] JavaScriptはオブジェクトのプロパティの順序を保証するか?
-
[解決済み] JavaScriptで配列の長さを初期化する方法は?
-
[解決済み] jQuery.fnとは何ですか?
-
[解決済み] JavaScriptで「var that = this;」とはどういう意味ですか?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法