如果([] == false) 為真,為什麼 ([] || true) 會返回 []? - JavaScript


如果我們仔細觀察問題陳述,([] == false) 和 ([] || true) 之間的區別如下:

在第一種情況下,我們使用鬆散條件檢查,允許型別強制轉換接管。

而在第二種情況下,我們正在評估 [] 到其相應的布林值(真值或假值),它使用 Boolean() 函式而不是鉤子下的型別強制轉換。

現在讓我們揭開這兩種情況下幕後發生的轉換。

案例 1 − ([] == false)

根據 MDN 文件,如果兩種資料型別(例如 x 和 y)使用鬆散相等運算子(==)進行比較,則:

布林值將使用 Number() 函式轉換為數字:

因此,條件現在變為:

[] == 0// Number(false) = 0

然後,如果物件型別的變數將轉換為原始值:

"" == 0

最後,空字串將轉換為數字:

0 == 0

以上最終返回 true

案例 2 − ([] || true)

在這種情況下,[] 的真值/假值將透過使用內建的 Boolean() 函式將其轉換為布林值來檢查。並且,

Boolean([]) = true

因此,真值 [] 被保留。

更新於: 2020年9月18日

440 次檢視

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告

© . All rights reserved.