0

私は長い間、以下が何を意味するのか疑問に思っていました:

var a = a || { b : 1 }

「a」に以前に割り当てられたプロパティがあった場合...それらは消えます。では、上記の構文の目的は何ですか?

4

4 に答える 4

6

私はこの種の構文が大好きです。私の意見では、それは非常にエレガントです。

説明はかなり簡単です。ここにあるのは、||(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が使用されます。

于 2013-08-06T09:23:19.557 に答える
0

何らかの値がすでに割り当てられている場合aは、その値を使用します。それ以外の場合は、オブジェクト{b:1}をに割り当てますa

于 2013-08-06T09:22:59.887 に答える