隱式類型轉換

1.1-隱式轉換介紹
在js中,當運算符在運算時,如果兩邊數據不統一,CPU就無法計算,這時我們編譯器會自動將運算符兩邊的數據做一個數據類型轉換,轉成一樣的數據類型再計算,這種無需程序員手動轉換,而由編譯器自動轉換的方式就稱爲隱式轉換,例如1 > "0"這行代碼在js中並不會報錯,編譯器在運算符時會先把右邊的"0"轉成數字0然後再比較大小

關於== 和 ===的性能,有人會覺得, == 的性能會比 === 的性能要慢。沒錯,== 確實是要比 === 多花一點時間,但是這只是微秒級的差別,也就是萬分之一秒左右,對於程序來說可忽略不計。但是無論 == 還是 === 都會檢測類型,只是檢測出來之後各自的操作不一樣。

空數組的toString()方法會得到空字符串,而空對象的toString()方法會得到字符串[object Object] (注意第一個小寫o,第二個大寫O喲)

邏輯運算符優先級高於關係運算符
1.邏輯非將其他數據類型轉換成布爾類型
2.關係運算符將其他數據類型轉換成數字

valueOf() 方法可返回 Boolean 對象的原始值。
console.log( [ ] == 0) //true 空數組的toString()方法會得到空字符串
console.log( ![ ] == 0) //true 空數組轉布爾得到true 然後取反得到false

console.log( [ ] == [ ]) //false
console.log( !{} == 0) //false 空對象

console.log( {} == {}) //false 引用數據類型存在堆中,堆中存儲的是地址
console.log( !{} == {}) //false

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章