空數組的真值和與假相等的混淆
在 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。
但是,第二個 if 語句將 arr 的值(呼叫 toString() 之後)與原始值 false 進行比較。在 JavaScript 中,當使用 toString() 呼叫時,[] 會轉換為空字串 (""),這被視為假值(以及 null、undefined、0 等)。因此,該條件的計算結果也為 false。
第三個 if 語句使用 AND 運算子 (&&) 組合了前兩個條件。由於 arr (現在是空字串)和 arr == false (true & false) 的計算結果都是 false,因此整個條件的計算結果為 false。
總而言之,空數組在被認為是真實的意義上是 true在物件或條件上下文中使用時呈現並評估為 true。然而,當與原始值 false 相比時,由於相等運算執行的隱式類型轉換,它們的計算結果為 false。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3