JavaScript中的switch語句

JavaScript語言中的條件語句,除了if 語句,還有switch 語句。switch 經常使用於根據不一樣的條件執行不一樣的操做。雖然它和 if 語句都是用來判斷條件的語句,可是它們之間仍是有不一樣。html

switch的語法

語法以下所示:express

switch(expression) {
    case 變量x:
    // 語句1代碼塊
    case 變量y:
    // 語句2代碼塊
    case 變量z:
    // 語句3代碼塊
    break;
    default:
    // 代碼塊
}

語法解釋:表達式值計算一次,而後咱們依次將表達式的值與每一種 case 狀況的值進行比較,若是匹配,就會執行與 case 對應的相關代碼塊。小程序

執行原理:變量 expression 的值與 case 的值進行比較,好比變量 expression 等於 case 變量 x,咱們就執行語句1的代碼塊,若是變量 expression 等於 case 變量 y 就執行語句2的代碼塊,依次類推,若是都不符合就執行 default 語句代碼塊。break 語言用於結束當前執行的語句,default 表示默認的,在沒有符合選項的時候默認選擇。瀏覽器

示例:

使用 switch 語句來看判斷今天是星期幾,並輸出對應時間。例如在一個 HTML 文件中,寫入下列代碼:code

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS_俠課島(9xkd.com)</title>
</head>
<body>
  <div>
    <p id="date"></p>
  </div>
  <script>
    var day;
    var d = new Date().getDay();  
    switch(d) {
        case 0:
          day = "星期天";
          break;
        case 1:
          day = "星期一";
          break;
        case 2:
          day = "星期二";
          break;
        case 3:
          day = "星期三";
          break;
        case 4:
          day = "星期四";
          break;
        case 5:
          day = "星期五";
          break;
        case 6:
          day = "星期六";
          break;
        case 7:
          day = "星期天";
          break;
    }
    document.getElementById("date").innerHTML = day;
    </script>
  </body>    
</html>

在瀏覽器中打開這個HTML文件,頁面會顯示:htm

星期二

咱們來分析一下 <script> 標籤中的 JavaScript 代碼,變量 d 是咱們獲取到的當天的星期天數(我寫這個文章的時候是星期二),getDay() 方法會返回與星期相對應的數字,例如星期一返回一、星期二返回2,以此類推。ip

而後咱們將這個變量 d 做爲switch 語句的表達式值,將它與 case 後面的值匹配,若是表達式等於某個 case 後面的值,則執行響應的代碼。例如上述代碼中,變量 d 的值爲2,那麼就會匹配到 case 2,所對應的代碼就是day = "星期二";,因此輸出結果爲星期二。後面還有一個break 語句,這個語句的做用就是跳出 switch 語句,避免同時執行多個caseutf-8

default 關鍵詞

default 關鍵詞規定 case 匹配不存在時所作的事情。get

示例:

例如咱們看下面這段代碼:string

var level = "P";
switch(level){
    case "A":
        console.log("第一類");
        break;
    case "B":
        console.log("第二類");
        break;
    case "C":
        console.log("第三類");
        break;
    case "D":
        console.log("第四類");
        break;
    default:
        console.log("其餘");
}

輸出:

其餘

上述代碼中,若是 level 的值不知足任何 case 的值,則會匹配到 default。代碼中 level 的值爲 P,而 case 語句中的值只有A、B、C、D,此時就會匹配到 default 語句,執行 default 語句下面的代碼。

break 關鍵詞用於跳出 switch 代碼塊。使用 break 可以節省大量執行時間,由於它會忽略 switch 代碼塊中的其餘代碼的執行。

switch 與 if 的對比

關於條件分支 switchif 二者之間的區別和關聯,咱們能夠經過下面這個表格進行簡單直觀的認識:

switch if
判斷條件 等值判斷 等值判斷和區間判斷
結束語句 break跳出 執行一個if後自動結束
默認和不然語句 default能夠放在任何位置 else只能放在最後
  • if 語句表達式的結果是 boolean 布爾類型,經常使用於區間判斷。
  • switch 表達式類型不能是 boolean 布爾類型,多是 byte、int、char、string、枚舉,經常使用於等值判斷。

注意通常能用 switch 語句實現的就必定能使用 if 語句來實現,可是反過來倒是不必定的,若是區間範圍就採用 if,若是等值判斷就使用 switch

效率問題:

  • switch case 會生成一個跳轉表來指示實際的 case 分支地址。
  • switch case 只能處理 case 爲常量的狀況。
  • if else 須要遍歷條件分支知道命中條件。
  • if else 能應用於更多的場所,比較靈活,可是必須遍歷全部可能的值。

動手小練習

  1. 寫一個小程序,讓用戶輸入月份,提示相應的季節,若是都不在指定的月份中則輸出"請正確輸入月份"。
  2. 熟記 switch 和 if 的基本內容以及二者間的關聯與區別。
相關文章
相關標籤/搜索