ホームページ > ウェブフロントエンド > jsチュートリアル > 空の配列が JavaScript では True を返すのに、等価比較では False を返すのはなぜですか?

空の配列が JavaScript では True を返すのに、等価比較では False を返すのはなぜですか?

Linda Hamilton
リリース: 2024-11-08 06:06:02
オリジナル
1043 人が閲覧しました

Why Does an Empty Array Return True in JavaScript but False in an Equality Comparison?

JavaScript における空の配列のパラドックスを理解する

JavaScript の空の配列は true にも false にも見えることがあり、開発者間の混乱を招く。根本的な理由を詳しく調べるために、さまざまなシナリオを調べてみましょう。JavaScript では配列が真の値と見なされるため、

if (arr) は true を返します。これは、配列が Object コンストラクターから継承するオブジェクトであり、オブジェクトは通常、条件ステートメント内で true として扱われるためです。

ただし、等価演算子 == を使用すると、より微妙な動作が生じます。 if (arr == false) は false を返します。これは、空の配列の文字列値が空の文字列であり、これは JavaScript の 6 つの偽値の 1 つであるためです。これは、等価演算子が toString() メソッドを使用して配列を強制的に文字列に変換するためです。このメソッドはデフォルトで配列に対して "[object Object]" を返します。ただし、空の配列の場合、toString() は空の文字列を返します。

この動作をさらに詳しく説明すると、ステートメント if (arr && arr == false) は論理 AND 演算子 ( &&) は、左側のオペランドが true の場合に式を短縮します。この場合、arr は true であるため、式の 2 番目の部分は評価されません。

したがって、配列の真の性質と等価比較で使用される強制値の異なる動作により、明らかな矛盾が生じます。 。これらのニュアンスを理解することは、JavaScript で空の配列を操作する際の混乱を避けるために非常に重要です。

以上が空の配列が JavaScript では True を返すのに、等価比較では False を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート