---
# System prepended metadata

title: if 與 switch 的使用時機？

---

# if 與 switch 的使用時機？

## JavaScript Switch 語句
==使用該switch語句選擇要執行的許多代碼塊之一。==

**語法**
```javascript=
switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}
```
* switch 表達式被評估一次
* 將表達式的值與每種情況的值進行比較
* 如果匹配，則執行關聯的代碼塊
* 如果不匹配，則執行默認代碼塊

**例子**
```javascript=
let day;
switch (day = 5) {
  case 0:
    day = "Sunday";
    break;
  case 1:
    day = "Monday";
    break;
  case 2:
    day = "Tuesday";
    break;
  case 3:
    day = "Wednesday";
    break;
  case 4:
    day = "Thursday";
    break;
  case 5:
    day = "Friday";
    break;
  case  6:
    day = "Saturday";
}
    //會印出Friday
```

**中斷關鍵字**

==當 JavaScript 遇到break 關鍵字時，它會跳出 switch 塊。==
這將停止 switch 塊內的執行。

沒有必要打破 switch 塊中的最後一個 case。無論如何，塊在那里中斷（結束）。

==注意：如果省略 break 語句，即使評估與 case 不匹配，也會執行下一個 case。==

**默認關鍵字**
default如果沒有大小寫匹配，關鍵字指定要運行的代碼：

**例子**

如果今天既不是星期六 (6) 也不是星期日 (0)，則寫一條默認消息：
```javascript=
let text;
switch (text = 3) {
  case 6:
    text = "Today is Saturday";
    break;
  case 0:
    text = "Today is Sunday";
    break;
  default:
    text = "Looking forward to the Weekend";
}
//會印出 Looking forward to the Weekend
```

## if 的使用時機
* 單純的專案
* 少量需要判斷的條件
* 有範圍選項的條件

## switch 的使用時機
* 用於不需要比較的判斷
* 複雜的專案
* 需要大量判斷的條件
* 有確定選項的條件






###### 參考文章
* [JavaScript｜if… else… / switch 差異](https://medium.com/@sunnyhuang.sc/%E6%8A%80%E8%A1%93%E7%AD%86%E8%A8%98-javascript-if-else-switch-%E5%B7%AE%E7%95%B0-337a910763f6)
* [avaScript 的 if 跟 switch 效能](https://hsiangfeng.github.io/javascript/20200117/3217748743/)
* [JavaScript switch 語法](https://www.fooish.com/javascript/switch-case.html)
* [JavaScript開關語句](https://www.w3schools.com/js/js_switch.asp)