論理演算子の戻り値を理解する
JavaScript では、論理演算子 && (論理 AND) と || が使用されます。 (論理 OR) はブール値の結果を返すことで知られています。ただし、特定の状況下では、驚くべきことに非ブール値を返す場合があります。この異常は、これらの演算子の基礎となる評価プロセスが原因で発生します。
論理短絡演算子
&& と || の重要な特性論理的短絡演算子としての動作にあります。これらの演算子を使用して式を評価する場合、最初に左側の引数が評価されます。
Evaluating || (論理和)
|| の場合、左側の引数が完全に決定された論理値 (true または false) に評価された場合、右側の引数は評価せずに結果が返されます。口論。これは、論理結果がすでに決定されているために発生します。
&& (論理 AND) の評価
|| と同様に、&& は左側の引数を最初に評価します。ただし、左側の引数が false と評価された場合、式は右側の引数を評価せずに false を返します。これは、式が true であるためには、&& は両方の引数が true である必要があるためです。
戻り値を理解する
論理式が true と評価されると、両方の &&そして ||左側の引数自体を返します。これは、JavaScript では、非ブール値に評価される式はすべて true として扱われるためです。
ただし、左側の引数が false に評価される場合、元の式は false に評価されます。 JavaScript バージョン 1.2 以降では、式自体が結果として返されます。この動作により、明示的な三項演算子を必要とせずに論理演算の連鎖が可能になります。
例:
次のコードを考えてみましょう:
var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {});
この例では、obj.fn が定義されており、真の値を返す場合、式 obj.fn が返されます。 obj.fn が定義されていない場合、式は false と評価され、右側の引数 obj._ || が発生します。 (obj._ = {})、評価されて返されます。
以上がJavaScript の論理演算子が非ブール値を返す場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。