JavaScript switch 語句

admin發表於2018-09-04

switch是流程控制語句,與if else非常類似。

可以根據是否滿足指定的條件,來決定是否執行指定的語句。

相關閱讀:

(1).if語句可以參閱JavaScript if else 語句一章節。

(2).兩者的區別可以參閱JavaScript switch與if語句的區別一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
switch(表示式){
  case 表示式一:
    程式碼語句
    break;     
  case 表示式二:
    程式碼語句
    break; 
  case 表示式三:
    程式碼語句
    break; 
  default:
    程式碼語句
}

語法結構分析如下:

(1).switch後面小括號中是一個表示式,可以計算出一個值。

(2).大括號中,每一個case後面也有一個表示式,同樣可以計算出一個值。

(3).switch後面表示式的值會與case後面表示式的值比較,如果相同,那麼執行對應case後面的程式碼。

(4).case後面程式碼執行完畢之後,如果後面有break,則直接跳出整個switch語句。

(5).如果沒有break,則繼續進行switch和case後面表示式的比較,然後如此反覆。

特別說明:default比較貪婪,只要給它機會,後面的語句就會被執行,比如它前面的條件都不滿足,default後面的語句就獲得執行的機會,還有即便前面有滿足條件的case,但是沒有break出語句,那麼default後面的語句也會執行,把握機會能力比較強。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let num=3
switch(num){
  case 1:
    console.log("num等於一");
    break;     
  case 2:
    console.log("num等於二");
    break; 
  case 3:
    console.log("num等於三");
    break; 
  default:
    console.log("螞蟻部落");
}

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/04/030500rgnl8t4a5lp7y587.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

switch後面的表示式num返回值是3,那麼與第三個case相匹配,執行與它關聯的語句。

列印出"num等於三"只會,執行break跳出整個switch。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let num=3
switch(num){
  case 4:
    console.log("num等於一");
    break;     
  case 5:
    console.log("num等於二");
    break; 
  case 6:
    console.log("num等於三");
  default:
    console.log("螞蟻部落");
}

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/04/030536kojeoojzpepobpe8.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

由於沒有一個case可以匹配,那麼default將成為接盤俠。

最終執行與default相關聯的程式碼,列印出"螞蟻部落"。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let num=3
switch(num){
  case 1:
    console.log("num等於一");
    break;     
  case 2:
    console.log("num等於二");
    break; 
  case 3:
    console.log("num等於三");
  default:
    console.log("螞蟻部落");
}

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/04/030611xenqnjdx7j7ngdij.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上面的程式碼中,即便有case匹配成功,但是依然會執行default相關聯的程式碼。

因為case關聯的程式碼沒有break,也就是沒有跳出switch語句,這樣會繼續語句的執行。

default把握機會的能力比較強,只要給它機會就會執行與它關聯的程式碼。

相關文章