JavaScript で空の配列が True と False の両方に評価されるのはなぜですか?

DDD
リリース: 2024-11-07 17:59:03
オリジナル
420 人が閲覧しました

Why Does an Empty Array Evaluate to Both True and False in JavaScript?

パラドックスの解明: ブール値のトワイライト ゾーンにおける空の配列

空の配列は、一見謎めいていて、独特の二重性を示し、同時に次のように評価されます。真実と偽り。この興味深い動作は、等価演算子内で展開される暗黙の変換から生じています。

提供されたコード スニペットでは、この二重性を直接目撃します。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!