js 實現 a == 'juejin' && a == 666 && a == 888
阿新 • • 發佈:2021-06-24
什麼是隱式轉換
在 javascript 中,當運算子在運算時,如果兩邊資料型別不統一,CPU就無法進行運算,這時 javascript 會自動將運算子兩邊的資料做一個數據型別轉換,轉成一樣的資料型別再計算。這種無需程式設計師手動轉換,而由編譯器自動轉換的方式就稱為隱式轉換。
當引用型別和基礎型別進行運算時,會將引用型別轉換為基礎型別。在 javascript 中,每個引用型別都有他們的內建方法,其中有兩個內建方法valueOf()
和toString()
:
- toString(): 返回物件的字串表示。
- valueOf(): 返回物件對應的字串、數值或布林值表示。通常與 toString()的返回值相同。
他們能夠將 Object 型別隱式轉換為基礎型別,從而進行運算和比較。
const a = { count: 0, // 記錄當前是第幾次比較 valueOf() { this.count++; if(this.count === 1) { return 'juejin' } else if(this.count === 2) { return 666 } else { return 888 } } } console.log(a == 'juejin' && a == 666 && a == 888) //true
原文地址:https://juejin.cn/post/6975693930096492580