Javacriptは、論理演算子およびに対して短絡評価を使用||
し&&
ます。ただし、true
やfalse
値ではなく、実行を停止した最後の値の結果を返すという点で他の言語とは異なります。
JavaScriptでは、次の値は偽と見なされます。
演算子の優先順位ルールを無視して、物事を単純に保ち、次の例は、どの値が評価を停止し、結果として返されるかを示しています。
false || null || "" || 0 || NaN || "Hello" || undefined // "Hello"
最初の5つまでの値NaN
は誤りであり、最初の真の値に達するまですべて左から右に評価されます。"Hello"
これにより、式全体が真になるため、それ以上の値は評価されず"Hello"
、式の結果として返されます。 。同様に、この場合:
1 && [] && {} && true && "World" && null && 2010 // null
最初の5つの値はすべて真実であり、最初の偽の値(null
)に達するまで評価されます。これにより、式が偽になり、2010
評価されなくなりnull
、式の結果として返されます。
あなたが与えた例は、JavaScriptのこのプロパティを使用して割り当てを実行することです。値のセットの中で最初の真または偽の値を取得する必要がある任意の場所で使用できます。このコードは、以下の値が割り当てられます"Hello"
にb
代わりのif-elseチェックを行うので、それはそれが簡単にデフォルト値を割り当てることが可能と。
var a = false;
var b = a || "Hello";
以下の例をこの機能の悪用と呼ぶことができますが、コードが読みにくくなると思います。
var messages = 0;
var newMessagesText = "You have " + messages + " messages.";
var noNewMessagesText = "Sorry, you have no new messages.";
alert((messages && newMessagesText) || noNewMessagesText);
アラートの内部では、messages
誤りがあるかどうかをチェックし、誤りがある場合はnoNewMessagesText
評価して戻りnewMessagesText
ます。それ以外の場合は評価して戻ります。この例では誤りなので、noNewMessagesTextとalertで停止し"Sorry, you have no new messages."
ます。
$f=$a or $f=$b or $f=$c; // etc
。PHPには||
演算子と演算子の両方or
があり、同じ働きをします。しかし、or
評価された後、割り当てしばらくは||
前に評価されます。これはまた、あなたに次の真のスタイルを与えます$a=getSomething() or die('oops');