私は JavaScript の達人ではありません。私はこの構文を見ました:
a != b && (c = b);
誰かが私にこれを説明できますか?
前もって感謝します
私は JavaScript の達人ではありません。私はこの構文を見ました:
a != b && (c = b);
誰かが私にこれを説明できますか?
前もって感謝します
の場合a != b
、 に代入b
しc
、が真のc
場合c
に返します。
a
が と等しくない場合はb
、 に割り当てb
ますc
。
ここで、左側が でない場合、右側は評価されませんtrue
。
あなたの例では、結果は if a != b
then assign b
to になりc
ます。真であるかどうかの評価はc
処理されません (この例では)。
このステートメントif
は、演算子の短絡により、簡略ステートメントのように機能します。
論理 AND を使用&&
する場合、これは、AND の左側が ANDfalse
の右側である場合、評価されないことを意味します。そのため、論理 AND を悪用して、一種の簡単なif
ステートメントを作成することができます。これは、論理 OR の場合も逆に発生します。左側が に評価されたtrue
場合、右側は評価されません (全体的な結果が変更されないため)。この演算子は、C、JavaScript、Java などの言語で奇抜な短絡を起こしていることがわかります。
変数a
が変数と等しくない場合は、変数を変数b
に割り当てますb
c
それはむしろ次のように書かれるべきです:
if (a != b) {
c = b;
}
このコードは、フロー制御のために演算子の短絡を使用します&&
(つまり、式の 2 番目の部分は、最初の部分が true の場合にのみ評価されます)。次に、代入も式であるという事実を使用して、代入を実行できるようにします。式、および式の値を無視します。