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