iT邦幫忙

2024 iThome 鐵人賽

DAY 5
2
Modern Web

JavaScript學習筆記系列 第 5

[Day 05] switch 流程判斷

  • 分享至 

  • xImage
  •  

今天學習條件控制中的switch,主要目的是在多個可能的條件下,比較「表達式或某變數的值」,並根據比對的結果來執行陳述式(statement)。

語法

switch (expression) {
  case caseExpression1:
    statements
  case caseExpression2:
    statements
  // …
  case caseExpressionN:
    statements
  default:
    statements
}
  • expression 表達式:用來跟case條件比對
  • caseExpression 條件:用來跟expression比對
  • statement 陳述式:要執行的程式碼
  • default 是非必須的,通常會寫在最後

先來看實際例子:

const drink = "咖啡";  // 消費者選擇飲料

switch (drink) {
    case "咖啡":  // 這裡是嚴格比對drink === "咖啡"
        console.log("咖啡的價格是 80 元");
        break;
    case "茶":
        console.log("茶的價格是 35 元");
        break;
    case "果汁":
        console.log("果汁的價格是 50 元");
        break;
    default:
        console.log("很抱歉,我們沒有這種飲料。");
}

// 印出 "咖啡的價格是 80 元"

switch重點

  • 當表達式與case條件比較時,是用嚴格相等運算 ===
  • 當多個case條件與switch表達式比對時,只會執行第1個符合case條件的陳述式,後面的case不會被檢查或執行
  • 每個case條件最後通常都會加上break,用來結束當前條件的執行。如果沒有加,不論有沒有符合條件,後面所有的陳述式都會執行
  • 有寫default預設條件的話,通常會寫在最後一個條件,當所有case不成立時執行。default條件非必寫。

如沒有加break終止,則全部陳述式都會執行:
switch

補充:
嚴格相等===是會比較型別和值。例如:5 === "5"在一般相等==結果為true,在嚴格相等則為false,因為一個是數值,另一個是字串。

結論

  • switch 適合的情況:
  1. 當有多個明確的值需要進行比較
  2. 當條件沒有複雜的比較邏輯,是單純的相等檢查時
  • if...else 適合的情況:
  1. 需要使用不同的比較運算子時(如 <, >, <=, >= 等)
  2. 當條件較少,或者條件之間的邏輯較為複雜時

參考資料

MDN - switch
重新認識 JavaScript: Day 09 流程判斷與迴圈


上一篇
[Day 04] if/else 流程判斷
下一篇
[Day 06] 迴圈 - for
系列文
JavaScript學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jeremykuo
iT邦新手 5 級 ‧ 2024-09-20 00:15:49

哇!沒注意過要break才不會出問題,看來之前又再誤打誤撞了XDD

我要留言

立即登入留言