[] == false; //爲True
!![] == false; //爲False
複製代碼
[] == false
爲True[] == 0
根據 MDN Web 文檔-比較操做符:developer.mozilla.org/zh-CN/docs/…javascript
若是其中一個操做數爲布爾類型,那麼布爾操做數若是爲true,那麼會轉換爲1,若是爲false,會轉換爲整數0,即0。 因此
![]
爲false爲0
.java
[] == 0
複製代碼
"" == 0
根據 MDN Web 文檔-比較操做符:developer.mozilla.org/zh-CN/docs/…git
若是一個對象與數字或字符串相比較,JavaScript會嘗試返回對象的默認值。操做符會嘗試經過方法valueOf和toString將對象轉換爲其原始值(一個字符串或數字類型的值)。 因此
[].valueOf().toString()
爲""
github
"" == 0
複製代碼
0 == 0
根據 MDN Web 文檔-比較操做符:developer.mozilla.org/zh-CN/docs/…app
當比較數字和字符串時,字符串會轉換成數字值。 JavaScript 嘗試將數字字面量轉換爲數字類型的值。
Number("")
爲0
。ui
0 == 0
複製代碼
最後0==0
位True
,因此[] == false
爲Ture
spa
!![] == false
爲False!![]
根據 MDN Web 文檔-運算符優先級:developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence 設計
!
的優先級爲16 ,==
的優先級爲10,!
的優先級更高,因此先運行!![]
code
!![]
複製代碼
!false
根據 **《Javascript高級程序設計》**這本書第44頁中邏輯非
的說明: cdn
若是操做數是一個對象,返回false
因此運行!false
,爲True
!false //爲True
複製代碼
最後true == false
爲False
,因此!![] == false
爲False
則[] == false
爲True
而!![] == false
爲False
。
Happy coding ..