# DAY21 - JavaScript 26. 比較運算子 >、=、<= 、 有沒有等於 == 不等於 != ### > 大於 & < 小於 & 大於等於 >= & <= 小於等於 - 比較運算子,執行的結果會回傳 `boolean ` JavaScript 會判斷是 `true` 還是 `false` ``` console.log(1 > 2); // false console.log(100 > 99); // true ``` - 情境模擬 ``` // 健身房體溫超過 37.5 不得入場: let myTemp = 36.5; let tempCounter = 37.5; // 有超過體溫上限嗎? console.log(myTemp > tempCounter); // - false ``` - >= & <= 範例 ``` console.log(35 >= 35); // true console.log(34 <= 33); // false ``` --- ### == - 提問有沒有等於的意思: - 提問 `true` 有沒有等於 `false`? ``` console.log(true == false); // false; ``` - 陷阱題 ``` console.log(1 == '1'); // true; ``` ### 看到這裡,可能會覺得很訝異? 為什麼 1 == '1'? - 為了解惑,我還特地寫了一個範例:: ``` let a = 1; let b = "1"; let c = a + b; console.log(a + b); console.log(typeof c); // 11 // string ``` ### 由上面的範例可證,1 其實不等於 '1' - 延伸探討: ``` 這是我與 mentor 討論出來的結果: 編譯器幫你做 「隱式型轉」 implicit 猜測你在 1 + "1" 的時候 希望變字串 但其實這樣變成工程師很容易犯錯 被詬病很久 所以 typescript 出現了 ``` ### != / a不等於b ? ``` let a = 1; let b = "1"; console.log(a != b); // false; // 結果在這一題, != 的判斷反而讓上一題的結果反轉了 == 真的是容易讓工程師出包的不良設定啊 xdd ``` ### 如果避免 == 害你出包? - 使用 `===` - `===` 其功能與 `==`相同,只不過 `===`還會加上型別上的判別 這樣一來,你就不會再出現 `1 == '1'` 卻等於 `true` 的問題。 ###### tags: `Re:0 前端工程師之路 - JavaScript 比較&邏輯運算子 篇章`