如果([] == 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
因此,真值 [] 被保留。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP