JavaScript switch...case 語句
在本教程中,你將學習如何使用 switch ... case
語句來測試或評估 JavaScript 中具有不同值的表示式。
JavaScript switch...case
語句
switch...case
語句表達了一種 if...else if...else
語句的替代,該語句做幾乎同樣的事情。switch...case
語句測試針對一系列值的變數或表示式,直到找到一個匹配,然後執行的程式碼對應於該匹配的塊。它的語法是:
switch(x){
case value1:
// Code to be executed if x === value1
break;
case value2:
// Code to be executed if x === value2
break;
...
default:
// Code to be executed if x is different from all values
}
請考慮以下示例,該示例顯示星期幾的名稱。
var d = new Date();
switch(d.getDay()) {
case 0:
alert("Today is Sunday.");
break;
case 1:
alert("Today is Monday.");
break;
case 2:
alert("Today is Tuesday.");
break;
case 3:
alert("Today is Wednesday.");
break;
case 4:
alert("Today is Thursday.");
break;
case 5:
alert("Today is Friday.");
break;
case 6:
alert("Today is Saturday.");
break;
default:
alert("No information available for that day.");
break;
}
getDay()
方法將工作日作為 0 和 6 之間的數字返回,其中 0 表示星期日。有關日期方法的詳細資訊,請參閱 JavaScript 日期和時間章節。
注意: 在 switch...case
語句中,使用嚴格相等操作符(===
) 將表示式或變數的值與 case 值進行比較。這意味著,如果 x = "0"
它不匹配 case 0:
,因為它們的資料型別不相等。
switch...case
語句不同於 if...else
語句的一個重要地方就是,switch
語句逐行執行(即逐個語句),一旦 JavaScript 找到一個 case
計算結果為 true
的子句,它不僅執行對應於該 case
子句的程式碼,而且還執行所有後續 case
子句,直到 switch
塊結束為止。
為了防止這種情況,你必須在每個 case
之後包含一個 break
語句(如上例所示)。該 break
語句告訴 JavaScript 直譯器在執行與第一個 true
case 相關聯的程式碼後,跳出 switch...case
語句塊。
然而,break
並不是在 case
或 default
中強制要求的在 switch 語句中的最後出現。雖然,使用 break
語句來中斷最後的 case
或 default
子句是一種很好的程式設計習慣。它可以防止以後如果在 switch
語句後新增了另一個 case
語句,出現程式設計錯誤。
default
子句是可選的,它指定在 switch
表示式沒有 case
匹配時要執行的操作。該 default
子句不必是出現在 switch 語句中的最後一個子句。這是一個例子,其中 default
不是最後一個子句。
var d = new Date();
switch(d.getDay()) {
default:
alert("Looking forward to the weekend.");
break;
case 6:
alert("Today is Saturday.");
break;
case 0:
alert("Today is Sunday.");
}
共享相同動作的多個 case
每個 case 值在 switch 語句中必須是唯一的。但是,不同的情況不需要具有獨特的操作。有幾種情況可以共享相同的操作,如下所示:
var d = new Date();
switch(d.getDay()) {
case 1:
case 2:
case 3:
case 4:
case 5:
alert("It is a weekday.");
break;
case 0:
case 6:
alert("It is a weekend day.");
break;
default:
alert("Enjoy every day of your life.");
}