JavaScript Switch Case


可以使用多個if... else if語句,如前面的章節,執行多路分支。然而,這並不總是最佳的解決方案,尤其是當所有分支的依賴單一的變數的值。

使用JavaScript1.2開始,你可以用它處理的正是這種情況,使用一個switch語句,它這樣做更有效,如果不是反復地使用if... else if語句。

語法

switch語句的基本語法給出一個expression ,以評估計算幾種不同的語句基於該表示式的值來執行。直譯器檢查對表示式的值的每一種情況,直到找到一個匹配。如果沒有匹配,則預設(default)條件將被使用。

switch (expression)
{
  case condition 1: statement(s)
                    break;
  case condition 2: statement(s)
                    break;
   ...
  case condition n: statement(s)
                    break;
  default: statement(s)
}

break語句指示的直譯器是特定情況下結束。如果它們被省略,則直譯器將繼續在以下每個情況(case)執行每個語句。

我們將解釋break語句在迴圈控制這一章。

例子:

下面的例子說明了一個基本的while迴圈:

<script type="text/javascript">
<!--
var grade='A';
document.write("Entering switch block<br />");
switch (grade)
{
  case 'A': document.write("Good job<br />");
            break;
  case 'B': document.write("Pretty good<br />");
            break;
  case 'C': document.write("Passed<br />");
            break;
  case 'D': document.write("Not so good<br />");
            break;
  case 'F': document.write("Failed<br />");
            break;
  default:  document.write("Unknown grade<br />")
}
document.write("Exiting switch block");
//-->
</script>

這將產生以下結果:

Entering switch block
Good job
Exiting switch block

 

例子:

考慮這樣一種情況,如果不使用break語句:

<script type="text/javascript">
<!--
var grade='A';
document.write("Entering switch block<br />");
switch (grade)
{
  case 'A': document.write("Good job<br />");
  case 'B': document.write("Pretty good<br />");
  case 'C': document.write("Passed<br />");
  case 'D': document.write("Not so good<br />");
  case 'F': document.write("Failed<br />");
  default:  document.write("Unknown grade<br />")
}
document.write("Exiting switch block");
//-->
</script>

這將產生以下結果:

Entering switch block
Good job
Pretty good
Passed
Not so good
Failed
Unknown grade
Exiting switch block