web-dev-qa-db-ja.com

Javascriptで「var FOO = FOO || {}」(変数または空のオブジェクトをその変数に割り当てる)とはどういう意味ですか?

オンラインソースコードを見ると、いくつかのソースファイルの一番上でこれに出会いました。

_var FOO = FOO || {};
FOO.Bar = …;
_

しかし、私は_|| {}_が何をするのか分かりません。

私は_{}_がnew Object()と等しいことを知っており、_||_は「既に存在する場合はその値を使用し、そうでない場合は新しいオブジェクトを使用する」などの目的に使用すると思います.

これがソースファイルの先頭に表示されるのはなぜですか?

93
Ricardo Sanchez
var AEROTWIST = AEROTWIST || {};

基本的に、この行はAEROTWIST変数をAEROTWIST変数の値に設定するか、空のオブジェクトに設定することを言っています。

二重パイプ||はORステートメントであり、ORの2番目の部分は、最初の部分がfalseを返す場合にのみ実行されます。

したがって、AEROTWISTに既に値がある場合、その値として保持されますが、以前に設定されていない場合は、空のオブジェクトとして設定されます。

基本的にこれを言うのと同じです:

if(!AEROTWIST) {var AEROTWIST={};}

お役に立てば幸いです。

21
Spudley

||のもう1つの一般的な使用法未定義の関数パラメータのデフォルト値も設定します:

function display(a) {
  a = a || 'default'; // here we set the default value of a to be 'default'
  console.log(a);
}

// we call display without providing a parameter
display(); // this will log 'default'
display('test'); // this will log 'test' to the console

通常、他のプログラミングの同等物は次のとおりです。

function display(a = 'default') {
  // ...
}
5
alessioalex

AEROTWISTに値がないか、nullまたは未定義の場合、新しいAEROTWISTに割り当てられる値は{}(空のオブジェクト)

3
sudipto

||演算子は2つの値を取ります。

a || b

Aが truthy の場合、aを返します。それ以外の場合は、bを返します。

偽の値はnullundefined0""NaNおよびfalse。真実の値は他のすべてです。

したがって、aが設定されていない場合(undefinedである場合)、bを返します。

1
pimvdb