私は長い間、以下が何を意味するのか疑問に思っていました:
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。