空の配列の真偽と偽との同等性に関する混乱
JavaScript では、空の配列は真であると見なされます。ただし、プリミティブ値 false と比較すると、これらも false と評価されます。この複雑な動作は、等価演算子によって実行される暗黙の型変換が原因である可能性があります。
提供されているコード例を詳しく見てみましょう。
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 が以下であるかどうかを確認します。 (オブジェクトとして) 存在します。 arr は Array オブジェクトであるため、存在し、条件は true と評価されます。
ただし、2 番目の if ステートメントは、arr の値 (toString() を呼び出した後) をプリミティブ値 false と比較します。 JavaScript では、toString() で呼び出された場合、[] は空の文字列 ("") に変換され、これは (null、未定義、0 などとともに) 偽の値とみなされます。したがって、条件も false と評価されます。
3 番目の if ステートメントは、AND 演算子 (&&) を使用して前の 2 つの条件を結合します。 arr (現在は空の文字列) と arr == false (true と false) の両方が false と評価されるため、条件全体が false と評価されます。
結論として、空の配列は、それらが考慮されるという意味で真実です。オブジェクトまたは条件付きコンテキストで使用される場合、存在し、true と評価されます。ただし、プリミティブ値 false と比較すると、等価演算によって実行される暗黙的な型変換により false と評価されます。
以上がJavaScript で空の配列が真と偽の両方に評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。