1. 程式人生 > >如何讓a == 1 && a == 2 && a == 3結果為true?

如何讓a == 1 && a == 2 && a == 3結果為true?

題目

宣告變數a,讓下面表示式結果為true。

a == 1 && a == 2 && a == 3 // true

解答

let a = {
  i: 1,
  valueOf () {
    return this.i++
  }
}

分析

注意到題目中用到的判斷是“雙等”,JS在做此類比較並且兩邊資料型別不一致時候會進行隱式轉換。而物件在做隱式轉換會呼叫valueOf方法,而valueOf不存在則會呼叫toString

JS邏輯運算從左至右依次判斷。