# if 與 switch
## if 語句 :point_right:
是一種選擇結構,用條件語句來決定執行不同的動作。
---
**if語句** : 條件為true時執行程式,為flase時無動作
```javascript=
if(條件){
條件為true執行的程式
}
if(3>0){ //true 執行語句
console.log("三大於零為真")
}
```
**if...else...語句** : 條件為true時執行程式,為false時執行其他程式
```javascript=
if(條件){
條件為true執行程式
} else {
條件為false執行程式
}
```
**if...else if...else語句** : 有多個條件要判斷時使用,依次判斷﹐當條件滿足時就執行相對的程式碼,*且只會執行一次*。 當所有條件都不滿足時執行else的程式碼
```javascript=
if(條件A){
條件為true執行程式
} else if(條件B){
條件為true執行程式
} else if(條件C){
條件為true執行程式
}else {
都不符合條件時執行
}
```
## switch語句 :point_right:
常用於根據不同的條件執行不同的操作,雖然它和 if 語句都是用來判斷條件的語句但是Switch case 使用嚴格比较(===)。
**語法**
```javascript=
switch (表達式) { //計算一次表達式
case 表達式A: //把表達式的值與每個 case 的表達式進行對比
語句A; //如果條件符合,則執行該語句
break;
case 表達式B: //不符合就繼續往下判斷
語句B;
...
...
default: //與所有case都不符合時執行default的語句
語句C;
break;
}
```
**實例**
```javascript=
let level = "C"
switch (level) { //條件為===C
case "A": //不符合
console.log("表現良好");
break;
case "B": //不符合
console.log("表現普通");
break;
case "C": //符合
console.log("有待加強"); //執行
break;
case "D":
console.log("需要努力");
break;
default:
console.log("留校察看");
break;
}
//輸出 有待加強
```
## break關鍵字
遇到 break 關鍵字,會跳出 switch 流程,直接終止程式能夠節省大量執行時間,因為它會忽略 switch 程式碼中的其他程式的執行。
若是沒有輸入break會穿透case執行到其他的case,可利用此點執行不同case但是相同表達式
## if與switch兩者比較
| | if | switch |
| -------- | -------- | -------- |
|判斷條件|等值判斷和區間判斷 |嚴格比較(等值)|
|結束方式|當完成一個相對應的語句時|break跳出|
## 判斷該用哪個:point_right:
> **對區間判斷用if
> 對幾個固定值用switch**
## 參考資料
[IT人](https://iter01.com/517544.html)
[W3school](https://www.w3school.com.cn/js/js_switch.asp)
{"metaMigratedAt":"2023-06-16T12:41:56.327Z","metaMigratedFrom":"Content","title":"if 與 switch","breaks":true,"contributors":"[{\"id\":\"663fae2d-2bb5-4437-90b7-96f11a50e120\",\"add\":1877,\"del\":33}]"}