JavaScript の論理演算子: 非ブール値の結果を理解する
常に数値を返す数学演算子とは異なり、論理演算子 (&& および | |) JavaScript では、ブール値の代わりにオブジェクトを返すことがあります。これは、特に条件チェックに使用しようとする場合、直観に反する可能性があります。
オブジェクトが返される理由
|| && 演算子は論理短絡演算子です。つまり、オペランドを左から右に評価し、完全に決定された最初の論理値を返します。 JavaScript では、この値は true または false のいずれかですが、オブジェクトにすることもできます。
条件ロジックを理解する
式 X || 内Y、X が最初に評価され、ブール値として解釈されます。 X が true の場合、X はすぐに返され、Y は評価されません。これは、式がすでに true であると判定されているためです。
X が false の場合、Y が評価され、そのブール値が返されます。
同様に、&& は、最初の引数が true である場合に評価を停止します。
「False」のトリック
最初の混乱のポイントは、式が「true」と評価されると式自体が返されるためです。これが、論理式から実際の値が返される可能性がある理由です。
Null を使用したトリック
2 番目の混乱点は、異なるバージョンでの JavaScript の動作に起因します。当初は、「false」式に対して false を返していましたが、バージョン 1.2 以降では、式の実際の値を返すようになりました。
例
説明するには:
var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {}); // Returns obj.fn() if defined, otherwise obj._ var _ = obj && obj._; // Returns obj._ if obj is true, otherwise obj
以上がJavaScript の論理演算子がブール値ではなくオブジェクトを返す場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。