ホームページ > 記事 > ウェブフロントエンド > JavaScript では空の配列が True と評価されるのに、厳密な比較では False と評価されるのはなぜですか?
空の配列ととらえどころのない真/偽のパラドックス
空の配列は、JavaScript で逆説的な動作を示すようです。これらは、暗黙的にテストされると true と評価されますが、明示的な等価比較では false と等価になるため、実際に行われている基礎的な仕組みについて疑問が生じます。
この現象を理解するには、暗黙的な型変換の領域を詳しく調べることが不可欠です。 JavaScript は比較を可能にするために値をさまざまな型にキャストするために使用します。
等価演算子 (==) を使用して配列を true と比較すると、配列は暗黙的にブール値に変換されます。 JavaScript では、このコンテキストでは空の配列が強制的に true に設定されます。これは、提供されたコード スニペットが「It's true!」と出力する理由を説明しています。空の配列 arr が true かどうかをチェックするとき。
ただし、等価演算子を使用して配列を false と比較する場合 (例: if (arr == false))、別のシナリオが展開されます。この場合、JavaScript は配列の値とプリミティブ false 値の間の厳密な等価比較を実行します。
重要なのは、JavaScript は比較を実行する前に配列の toString() メソッドを内部で呼び出します。この変換では、空の配列に対して空の文字列が返されますが、これは JavaScript の誤った値の 1 つとなります。その結果、等価比較の結果は true となり、「それは false!」という一見矛盾した結果が得られます。
複雑さをさらに説明するために、条件ステートメント if (arr && arr == false) は、arr の真偽と false との同等性を同時にチェックします。 arr は真実であるため、2 番目の条件が評価され、「 ...what??」という結果になります。
この独特の動作は、JavaScript でさまざまな値を比較するときに型変換を理解することの重要性を強調し、配列や偽の値を操作するときに発生する可能性のある微妙なニュアンスを示しています。
以上がJavaScript では空の配列が True と評価されるのに、厳密な比較では False と評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。