1. ホーム
  2. javascript

[解決済み] "var FOO = FOO || {}"とは何ですか?(変数またはその変数に空のオブジェクトを代入する) とは、Javascript ではどういう意味ですか?

2022-12-13 08:29:25

質問

オンラインのソースコードを見ていたら、いくつかのソースファイルの一番上にこのようなものがありました。

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 つのファイルがどの順番で読み込まれるかは問題ではなく、やはり func1func2 の中で正しく定義されています。 MY_NAMESPACE オブジェクトの中で正しく定義されています。

最初に読み込まれるファイルは を作成します。 を作成します。 MY_NAMESPACE オブジェクトを作成し、その後に読み込まれたファイルは を増やします。 オブジェクトを拡張します。

有用なことに、これはまた 非同期 の読み込みが可能になり、ページの読み込み時間を短縮することができます。 もし <script> タグに defer 属性が設定されていると、どの順番で解釈されるか分からないので、上記のようにこの問題も修正されます。