理解 JavaScript 中空數組的悖論
JavaScript 中的空數組可能看起來既正確又錯誤,導致開發人員感到困惑。為了深入探究根本原因,讓我們檢視不同的場景。
if (arr) 傳回 true,因為陣列在 JavaScript 中被視為真值。這是因為陣列是從 Object 建構函數繼承的對象,而物件通常在條件語句中被視為 true。
但是,當使用相等運算子 == 時,會出現更細微的行為。 if (arr == false) 傳回 false,因為空數組的字串值是空字串,這是 JavaScript 的六個假值之一。這是因為相等運算子使用其 toString() 方法將陣列強制轉換為字串,該方法預設為陣列傳回「[object Object]」。但是,對於空數組,toString() 會傳回空字串。
為了進一步說明此行為,語句 if (arr && arr == false) 的計算結果為 true,因為邏輯 AND 運算子 ( &&) 當左側運算元為 true 時使表達式短路。在這種情況下,arr 為 true,因此不計算表達式的第二部分。
因此,由於數組的真實性質和相等比較中使用的強制值的不同行為,出現了明顯的悖論。理解這些細微差別對於避免在 JavaScript 中使用空數組時出現混淆至關重要。
以上是為什麼空數組在 JavaScript 中傳回 True,但在相等比較中傳回 False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!