---
# System prepended metadata

title: DAY21 - JavaScript 26. 比較運算子 >、=、<= 、 有沒有等於 ==  不等於 !=
tags: ['Re:0 前端工程師之路 - JavaScript 比較&邏輯運算子 篇章']

---

# 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 比較&邏輯運算子 篇章`