switch 是另一種寫「條件式」的方式
switch 的寫法
switch 範例程式碼:
🎃 「switch(prefer)
」:先設立一個表達式 switch()
,且包含一些條件(可以有一個 or 多個條件)
🍋 在「小括號()
」裡面,帶「變數」進去,帶「變數」進去後,就一定會執行「大括號{}
」的程式碼
🎃 帶「變數」進去後,就會開始比對「case
的值」
🍋 如果帶進去的變數符合「'生菜沙拉'
」,就會執行相關連的程式碼:eat('生菜沙拉')
🎃 每個case
後方,都要加上「break;
」,作用是:阻止已完成的區塊後方繼續執行
🎃 如果帶進去的變數,跟所有的case
都“不符合”,那就會執行「default:
的程式碼」
🍋 default:
不一定要放在最後方,也可以寫在case
的前面。原因為:
執行的順序一定是「先跟case
比對」–> 「都沒有相符,才執行default:
」
🎃 「case
、default:
」裡面的程式碼,可以用 tab 縮排,程式碼會更好閱讀
1 | var prefer = '生菜沙拉'; |
「switch
」跟「if
、else if
、else
」的差異
在「效能」的差異
🎃 使用「if
、else if
、else
」
瀏覽器在編譯時,會把所有「if
、else if
、else
」的「條件、程式碼」都審視一遍(無論有沒有符合條件)–> 這樣,編譯的“速度和效能”是較差的 (尤其是當我寫了很多個else if
,效能更差)
🎃 使用「switch
」
瀏覽器在編譯時,只需要把「變數」去跟「case
」做比對,如果有相符,才會去執行裡面的程式碼–> 在效能方面是較好的
在「使用時機」的差異
🎃 使用「if
、else if
、else
」
-
在不同的條件區間(
if
、else if
),可以執行不同的效果 -
如果“沒有符合”任何條件,就會執行「
else
」的程式碼
🎃 使用「switch
」
適合用在:
🍋 一定會有相符的值
🍋 已經確定「會有哪些狀態」了,就可以針對「不同狀態」,依序去執行不同的程式碼
‼️ 注意!當需要使用過多else if
的時候,可以改用「switch
」
- 使用「
switch
」不僅可以讓程式碼更好閱讀,也可以節省一些效能
switch 範例練習
現在,我要寫的是:在不同警戒狀態時,會出現「不同的提示文字」
🎃 先宣告一個變數:警戒狀態是紅色的 var light = 'red';
🎃 在switch(){}
寫上兩個條件:
1 | var light = 'red'; |
執行 switch
🎃 switch 在「小括號()
」帶入變數「light
」後,就“一定會”執行「大括號{}
」內的程式碼
🎃 帶入變數「light
」後,就會開始跟「case
的值」做比對依序比對:
- 比對第一個
case
:light
是否有== 'red'
) - 比對第二個
case
:light
是否有== 'blue'
)
🎃 變數「light
」的值,如果跟這個case
的值相符,就會執行「這個case
裡面的程式碼」
JS:
1 | var light = 'red'; |
🎃 可以看到,因為我設定的變數var light = 'red';
,因此會執行「alert('紅色警戒');
」
default:
🎃 如果變數都沒有找到「相符合的case
」,就會執行「default:
的程式碼」
JS:
1 | var light = ''; |
- 因為我把變數的值拿掉了
- 找不到「相符合的
case
」 - 就會執行「
default:
的程式碼」
在switch
執行 function
JS:
🎃 在外面先設定好一個 function
1 | function lightFun(str){ |
🎃 在case 'blue':
帶入這個 function
1 | var light = 'blue'; |
🎃 Console 就會顯示出console.log('目前是' + str + '警戒');