1. 程式人生 > 其它 >js 實現 a == 'juejin' && a == 666 && a == 888

js 實現 a == 'juejin' && a == 666 && a == 888

什麼是隱式轉換


在 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