空數組的真值和與假相等的混淆
在 JavaScript 中,空數組被認為是真值。但是,與原始值 false 相比,它們的計算結果也為 false。這種令人困惑的行為可以歸因於相等運算子執行的隱式類型轉換。
讓我們仔細看看提供的範例程式碼:
第一個 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。然而,當與原始值 false 相比時,由於相等運算執行的隱式類型轉換,它們的計算結果為 false。
以上是為什麼 JavaScript 中空數組的計算結果既為真又為假?的詳細內容。更多資訊請關注PHP中文網其他相關文章!