Switch是與if ... else ...相同的條件語句,不同之處在于switch語句允許根據(jù)值列表測試變量是否相等。
使用switch從要執(zhí)行的許多代碼塊中選擇一個。這是一個完美的解決方案,嵌套if…else語句。
一條switch語句如下所示:
switch (expression) {
case value1:
//語句執(zhí)行
//表達式的結果與value1匹配
break;
case value2:
//語句執(zhí)行
//表達式的結果與value2匹配
break;
...
case valueN:
//語句執(zhí)行
//表達式的結果與value N匹配
break;
default:
//當以上任何一項都不執(zhí)行時
//執(zhí)行這里的代碼塊
}按照上面代碼塊的邏輯,這是將要發(fā)生的事件的順序:
switch表達式一次求值
將表達式的值與每種情況的值進行比較
如果匹配,則執(zhí)行相關的代碼塊
如果所有情況都不匹配,則執(zhí)行默認代碼塊
以下示例使用工作日編號來計算星期幾:
var day;
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
day = "Undefined Day";
}測試看看?/?break與每個case標簽相關聯(lián)的關鍵字可確保一旦執(zhí)行了匹配的語句,程序便會退出切換,并在切換后的語句處繼續(xù)執(zhí)行。如果省略break,程序將在switch語句的下一個語句處繼續(xù)執(zhí)行。
如果您忘記休息,那么腳本將從符合條件的情況開始運行,然后在滿足條件的情況下運行情況:
var num = Number(document.querySelector("input").value);
var text;
switch (num) {
case 1:
text = "您輸入的號碼是 1";
case 2:
text = "您輸入的號碼是 2";
case 3:
text = "您輸入的號碼是 3";
case 4:
text = "您輸入的號碼是 4";
case 5:
text = "您輸入的號碼是 5";
default:
text = "執(zhí)行默認語句";
}測試看看?/?沒有必要中斷switch塊中的最后一種(即default)情況。因為語句塊最終在這里中斷(結束)。
如果沒有case匹配,則default關鍵字指定要運行的一些代碼。
switch中只能有一個默認語句。盡管這是可選的,但建議您使用它,因為它可以處理預料之外的情況。
有時,您會希望不同的情況使用相同的代碼,或者使用通用代碼。
這是一個操作順序switch語句的一個示例,其中四個不同的值執(zhí)行完全相同的操作:
var num = Number(document.querySelector("input").value);
var text;
switch (num) {
case 1:
case 2:
case 3:
case 4:
text = "你輸入的數(shù)字介于兩者之間 1 - 4";
break;
case 5:
case 6:
case 7:
case 8:
text = "你輸入的數(shù)字介于兩者之間 5 - 8";
break;
default: text = "執(zhí)行默認語句";
}測試看看?/?如果多個case與值匹配,則選擇第一個case。
如果找不到匹配的case,程序將繼續(xù)使用默認標簽。
如果未找到默認標簽,則程序將繼續(xù)執(zhí)行切換后的語句。