パラドックスの解明: ブール値のトワイライト ゾーンにおける空の配列
空の配列は、一見謎めいていて、独特の二重性を示し、同時に次のように評価されます。真実と偽り。この興味深い動作は、等価演算子内で展開される暗黙の変換から生じています。
提供されたコード スニペットでは、この二重性を直接目撃します。
var arr = []; console.log('Array:', arr); if (arr) console.log("It's true!"); if (arr == false) console.log("It's false!"); if (arr && arr == false) console.log("...what??");
この謎を解読するには、等価演算子の仕組み。オブジェクト (この場合、配列はオブジェクト) とともに使用すると、その存在がチェックされます。したがって、空の配列は有効なオブジェクトであるため、if (arr) は true を返します。
ただし、== 演算子を使用して配列を false プリミティブと比較すると、事態はさらにわかりにくくなります。この比較には、arr.toString() による配列の文字列への変換が含まれます。結果として得られる空の文字列は、"" として示され、JavaScript では偽の値とみなされます。
したがって、このコンテキストでは空の文字列は false プリミティブと等しいため、if (arr == false) は true と評価されます。この明らかな矛盾は、JavaScript が実行する暗黙の型変換から生じます。
この混乱を解決するには、値と型の両方の同一性を考慮する三重等価演算子 (===) を選択する必要があります。これにより、空の配列が false と等しいとみなされることがなくなります。
要約すると、空の配列が true と false の両方であるように見える二分法は、等価演算子と厳密等価演算子によって実行される評価の違いに由来しており、微妙な点が強調されています。 JavaScript の型処理の複雑さ。
以上がJavaScript で空の配列が True と False の両方に評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。