JavaScript語言中的條件語句,除了if
語句,還有switch
語句。switch
經常使用於根據不一樣的條件執行不一樣的操做。雖然它和 if
語句都是用來判斷條件的語句,可是它們之間仍是有不一樣。html
語法以下所示: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
語句,避免同時執行多個case
。utf-8
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
二者之間的區別和關聯,咱們能夠經過下面這個表格進行簡單直觀的認識:
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
能應用於更多的場所,比較靈活,可是必須遍歷全部可能的值。