1.1-隱式轉換介紹
在js中,當運算符在運算時,若是兩邊數據不統一,CPU就沒法計算,這時咱們編譯器會自動將運算符兩邊的數據作一個數據類型轉換,轉成同樣的數據類型再計算,這種無需程序員手動轉換,而由編譯器自動轉換的方式就稱爲隱式轉換,例如1 > "0"這行代碼在js中並不會報錯,編譯器在運算符時會先把右邊的"0"轉成數字0而後再比較大小程序員
關於== 和 ===的性能,有人會以爲, == 的性能會比 === 的性能要慢。沒錯,== 確實是要比 === 多花一點時間,可是這只是微秒級的差異,也就是萬分之一秒左右,對於程序來講可忽略不計。可是不管 == 仍是 === 都會檢測類型,只是檢測出來以後各自的操做不同。數組
空數組的toString()方法會獲得空字符串,而空對象的toString()方法會獲得字符串[object Object]
(注意第一個小寫o,第二個大寫O喲)ide
邏輯運算符優先級高於關係運算符
1.邏輯非將其餘數據類型轉換成布爾類型
2.關係運算符將其餘數據類型轉換成數字性能
valueOf() 方法可返回 Boolean 對象的原始值。
console.log( [ ] == 0) //true 空數組的toString()方法會獲得空字符串
console.log( ![ ] == 0) //true 空數組轉布爾獲得true 而後取反獲得falsecode
console.log( [ ] == [ ]) //false
console.log( !{} == 0) //false 空對象對象
console.log( {} == {}) //false 引用數據類型存在堆中,堆中存儲的是地址
console.log( !{} == {}) //false 字符串