私は長い間、以下が何を意味するのか疑問に思っていました:
var a = a || { b : 1 }
「a」に以前に割り当てられたプロパティがあった場合...それらは消えます。では、上記の構文の目的は何ですか?
私は長い間、以下が何を意味するのか疑問に思っていました:
var a = a || { b : 1 }
「a」に以前に割り当てられたプロパティがあった場合...それらは消えます。では、上記の構文の目的は何ですか?
私はこの種の構文が大好きです。私の意見では、それは非常にエレガントです。
説明はかなり簡単です。ここにあるのは、||
(or) 演算子を使用した条件式です。これにより、条件の結果に従って変数に値が割り当てられます。
この場合、条件はa || { b : 1 }
であるため、変数a
がすでに定義されている (つまり、false 値と等しくない) 場合、変数a
は変更されません。ただし、a
まだ定義されていない場合は、オブジェクト リテラルの値が割り当てられます{ b : 1 }
。
この構文の方法は、通常、デフォルト値を定義するために使用されます。
例えば:
function say_hello( name ){
var the_name = name || 'Dude';
alert( "Hello, " + the_name );
}
say_hello( "Lix" ); // OUTPUTS: Hello, Lix
say_hello(); // OUTPUTS: Hello, Dude
引数name
が関数に渡されていない場合は、デフォルトの名前Dude
が使用されます。
何らかの値がすでに割り当てられている場合a
は、その値を使用します。それ以外の場合は、オブジェクト{b:1}
をに割り当てますa
。