1. ホーム
  2. ジャバスクリプト

[解決済み】空の配列がtrueとfalseに同時になるようです。

2022-04-06 08:41:09

質問

空の配列は真だが、偽にも等しい。

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) オブジェクト(JSではArrayがObjectのインスタンス)に対して呼び出されると、そのオブジェクトが存在するかどうかをチェックし、true/falseを返します。

を呼び出すと if (arr == false) を比較します。 このオブジェクトとプリミティブの false の値を指定します。内部的には arr.toString() が呼び出され、空の文字列が返されます。 "" .

これは、以下の理由からです。 toString は、Arrayに対して呼び出されると Array.join() 空文字列は、JavaScriptでは不正な値の一つです。