私は、通常のブール演算子の代わりに条件付きブール演算子 (ショートサーキットとも呼ばれます) を使用しても、式の結果には影響しないと常に信じてきました。
var result = true | false & false;
と同じ結果になります
var result = true || false && false
両方の式の結果は になりtrue
ます。
しかし、通常の演算子と条件付き演算子を混在させるとどうなるでしょうか?
var result1 = true || false & false;
var result2 = true | false && false;
あなたは何を期待しますか?これらはまだ戻ってくると思いtrue
ます。しかし、そうではありません。Result2 はfalse
!
これはoperator precedenceが原因であることはわかっています。優先順位は& | && ||
です。これは私には直感に反するようです。その場合、すべての結果は同じになります(私& && | ||
は思います)。
したがって、私の本当の質問は、短絡が結果を変えることができるかどうかではないと思います. 問題は、なぜ短絡によって結果が変わるような優先順位になっているのかということです。