JavaScript空數組疑惑

最近偶然間看到一段代碼,大概能夠表示以下

if([]){
    //其餘代碼
}
複製代碼
首先我想到的是,因爲是空數組,這段代碼應該執行不到,可是嘗試寫了個demo
if([]){
    console.log("here");
}
複製代碼

發現瀏覽器打印出了:here,說明以前想法出錯了~~數組

可是,又嘗試瞭如下狀況:瀏覽器

[] == false
!![]
複製代碼

瀏覽器都打印出:true,這樣就感受更加迷惑了。也就是說空數組[]能夠轉換成true,能夠轉換成false,JavaScript果真是一個神奇的語言啊bash

百度瞭如下,大約發現一些緣由

使用"=="進行比較時,若是兩邊的類型不一致的話,會對兩邊的類型進行轉換,轉換成能夠相互比較的類型,針對以上狀況: 空數組[]會轉換成Number類型,轉換成0,false也會轉換成Number類型,也轉換成0,所以就出現了[] == false結果是true的狀況spa

JavaScript中使用"=="運算符進行比較時,仍是須要當心謹慎

相關文章
相關標籤/搜索