JS switch語句

2022-03-15 19:00:03
處理多個條件分支取決於相同的表示式,並且條件分支的數量在 3 個以上,就要考慮使用 switch 語句了。

下面是 switch 語句的基本語法:

switch ([表示式]) {
    case [預估值1]:
        [分支語句]
        break;
    case [預估值2]:
        [分支語句]
        break;
    case [預估值3]:
        [分支語句]
        break;
    ...
    case [預估值 n]:
        [分支語句]
        break;
    default:
        [分支語句]
        break;
}

在這裡,[表示式]通常是一個變數,但也可以是其他任何能提供返回值的成分。[預估值1][預估值n]則都是程式設計師預測[表示式]可能會返回的值。

在該語句被執行時,程式會拿這些預估值去一一比對[表示式]返回的實際值,如果存在匹配的預估值,就執行該值之後的所有語句。

請注意,這裡說的所有語句是指匹配預估值後面所有分支的語句。如果我們只想執行它當前所在分支的[分支語句],就必須在該[分支語句]後面加上一個 break 跳轉語句,跳出 switch 語句的執行。

如果程式沒有找到任何匹配的預估值,就會執行由關鍵字 default 標記的分支。和 if 語句中的 else 分支一樣,這裡的 default 分支也是可選的。

如果程式設計師覺得沒有必要,也可以不設定這一分支。在這種情況下,如果程式沒有找到匹配的預估值,switch 語句就什麼也會不做。

說得更具體一點,整個 switch 語句的執行步驟可細分為以下幾步:
  • 對 switch 語句的[表示式]進行求值,並記錄結果。
  • 進入第一個 case 分支,將預估值與步驟 1 的結果進行比對。
  • 如果步驟 2 中的比對結果為 true,則執行該 case 分支後面的“所有程式碼”。
  • 在相關 case 分支中的語句執行完成之後,如果遇到 break 語句就直接退出 switch 語句。
  • 如果步驟 2 中的比對結果為 false,就進入下一個 case 分支中,重複步驟 2~5 中的操作。
  • 如果直到最後一個 case 分支的比對結果依然為 false,就執行 default 分支後面的程式碼。
  • 如果 default 分支不存在,就直接退出 switch 語句。

下面,我們通過一個具體的例子來演示一下 switch 語句的用法。

switch 這個單詞的其中一個含義是交換機,這就讓人聯想到了撥打電話的原理。接下來,我們就用 switch 語句來模擬一個只能給 4 個人打電話的電話交換機:
let number = 1002;
switch (number) {
    case 1001:
        console.log('張三');
        break;
    case 1002:
        console.log('李四');
        break;
    case 1003:
        console.log('王五');
        break;
    case 1004:
        console.log('趙六');
        break;
    default:
        console.log('你撥打的是空號!');
        break;
}
執行上述程式碼然後檢視當 number 的值分別為 1001、1002、1003、1004 和其他任意數位時的執行結果。

number 的值為 1002 和 1005 時的結果如圖所示。