除了if ... else之外,JavaScript還有一個稱為switch語句的功能。 switch是一種條件語句,它將針對多種可能的情況評估表達式,並根據匹配的情況執行一個或多個程式碼區塊。 switch語句與包含許多其他if區塊的條件語句密切相關,它們通常可以互換使用。
在本教學中,我們將學習如何使用switch語句,以及如何使用相關的關鍵字case,break和default。最後,我們將介紹如何在switch語句中使用多個case。
【相關課程推薦:JavaScript影片教學】
#Switch
switch語句計算表達式並作為匹配大小寫的結果執行程式碼。起初它看起來有點令人生畏,但基本語法類似於if語句。它將始終使用switch(){}編寫,括號中包含要測試的表達式,以及包含要執行的潛在程式碼的花括號。
下面是一個帶有兩個case語句的switch語句和一個稱為default的回退的範例。
switch (expression) { case x: // execute case x code block break; case y: // execute case y code block break; default: // execute default code block }
遵循上面程式碼區塊的邏輯,這是將要發生的事件序列:
表達式被評估
#第一個case,x將針對表達式進行測試。如果匹配,則代碼將執行,break關鍵字將結束該switch區塊。
如果它不匹配,x將跳過,y並將針對表達式測試案例。如果y匹配表達式,程式碼將執行並退出switch區塊。
如果所有情況都不匹配,則default程式碼區塊將運行。
讓我們按照上面的語法製作一個switch語句的工作範例。在此程式碼區塊中,我們將使用新的Date()方法找到一周中的當前日期,並使用getDay()來列印與當天相對應的數字。 1代表星期一,一直代表7代表星期日。我們將從設定變數開始。
const day = new Date().getDay();
使用switch,我們將在一周中的每一天向控制台發送訊息。程式將按從上到下的順序運行以查找匹配項,一旦找到一個,該break命令將停止該switch塊繼續評估語句。
week.js
// Set the current day of the week to a variable, with 1 being Monday and 7 being Sunday const day = new Date().getDay(); switch (day) { case 1: console.log("Happy Monday!"); break; case 2: console.log("It's Tuesday. You got this!"); break; case 3: console.log("Hump day already!"); break; case 4: console.log("Just one more day 'til the weekend!"); break; case 5: console.log("Happy Friday!"); break; case 6: console.log("Have a wonderful Saturday!"); break; case 7: console.log("It's Sunday, time to relax!"); break; default: console.log("Something went horribly wrong..."); }
Output 'Just one more day 'til the weekend!'
此程式碼在星期四進行了測試,對應於4,因此控制台輸出為Just one more day 'til the weekend!。根據您測試程式碼的星期幾,您的輸出會有所不同。我們default在最後包含一個區塊以便在出現錯誤時運行,在這種情況下不應該發生,因為一周只有7天。例如,我們也可能只有週一到週五的列印結果,而該default區塊可能在週末也有相同的資訊。
如果我們在每個語句中省略了break關鍵字,則其他case語句都不會被評估為true,但程式將繼續檢查直到它到達結尾。為了使我們的程式更快,更有效率,我們包括break。
Switch Ranges
在某種情況下,您需要評估switch區塊中的一系列值,而不是像上面範例中的單一值。 我們可以透過將表達式設為true並在每個case語句中執行操作來完成此操作。
為了使這更容易理解,我們製作了一個簡單的評分應用程序,它將獲得一個數字分數並將其轉換為字母等級,具有以下要求。
● 等級90以上是A
● 等級80到89是B
● 等級70到79是C
● 等級等級
● 等級59或以下是F
現在我們可以將其寫為switch語句。由於我們正在檢查範圍,因此我們將在每種情況下執行操作以檢查每個表達式是否正在評估為true,然後在滿足true要求後突破語句。
grades.js
// Set the student's grade const grade = 87; switch (true) { // If score is 90 or greater case grade >= 90: console.log("A"); break; // If score is 80 or greater case grade >= 80: console.log("B"); break; // If score is 70 or greater case grade >= 70: console.log("C"); break; // If score is 60 or greater case grade >= 60: console.log("D"); break; // Anything 59 or below is failing default: console.log("F"); }
Output 'B'
在此範例中,要計算的括號中的表達式為true。這意味著任何評估為true的情況都是相符的。
就像使用else一樣,switch從上到下進行評估,並接受第一個真正的匹配。因此,即使我們的等級變數為87,因此對於C和D也評估為真,第一個匹配是B,它將是輸出。
Multiple Cases
您可能會遇到多個case應具有相同輸出的程式碼。為了實現這一點,您可以為每個程式碼區塊使用多個case。
為了測試這個,我們將製作一個小的應用程序,將當前月份與適當的季節相匹配。首先,我們將使用新的Date()方法來尋找與目前月份對應的數字,並將其應用於月份變數。
為簡單起見,我們的應用程式將輸出具有以下規格的四季:
● 冬季:一月,二月和三月
● 春天:四月,五月和六月
● 夏季:七月,八月和九月
● 秋天:十月,十一月和十二月
以下是我们的代码。
seasons.js
// Get number corresponding to the current month, with 0 being January and 11 being December const month = new Date().getMonth(); switch (month) { // January, February, March case 0: case 1: case 2: console.log("Winter"); break; // April, May, June case 3: case 4: case 5: console.log("Spring"); break; // July, August, September case 6: case 7: case 8: console.log("Summer"); break; // October, November, December case 9: case 10: case 11: console.log("Autumn"); break; default: console.log("Something went wrong."); }
当我们运行代码时,我们将根据上面的规范接收识别当前季节的输出。
Output Summer
出版时的当月是8,这与“夏季”季节产出的一个case陈述相对应。
结论:
在本文中,我们回顾了switch语句,这是一种条件语句,用于评估表达式并根据匹配结果输出不同的值。 我们使用范围和多个case语句检查了switch语句。
本文来自 js教程 栏目,欢迎学习!
以上是詳解JavaScript中Switch語句的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!