switch分支語句合併相同功能的case語句
阿新 • • 發佈:2018-12-17
Write By Monkeyfly
以下內容均為原創,如需轉載請註明出處。
前提
描述:
switch 語句用於:根據一個變數的不同取值,來執行不同的程式碼。
語法:
switch(n)
{
case 1:
執行程式碼塊 1
break;
case 2:
執行程式碼塊 2
break;
default:
如果以上條件都不滿足,則執行該程式碼;
}
如果多個 case
語句都執行相同的功能程式碼時,應該怎麼處理呢?【可以做如下理解】
- 如何給
case
語句傳多個值? switch
分支結構中一個case
語句可以跟多個值嗎?switch
語句中 相同的case
實現
我的寫法如下:【錯誤寫法】
switch(month){
case 1 || 3 || 5 || 7 || 8|| 10 ||12:
console.log(month+"月有31天");
break;
case 4 || 6 ||9 ||11:
console.log(month+"月有30天");
break;
default:
console.log(month+"月有28天");
}
於是我就習慣性的使用了 JavaScript
中的邏輯運算子 || (或)
來實現的。
注:邏輯運算子用於測定變數或值之間的邏輯。
發現問題
剛開始寫的時候沒注意這個寫法有沒有問題,因為自己也是第一次這麼寫。
今天在測試功能時,經過除錯才發現了該問題:當變數的值符合 這個 case
語句中的表示式判斷時,它並沒有執行該 case
語句,而是直接執行了 default
語句。
當錯誤發生的時候,我才意識到:有可能是當初 case 語句 的表示式判斷寫的有問題。如果多個變數的取值都對應同一種處理情況時,我選擇了使用 邏輯運算子 || (或)來實現。寫的時候也不知道對錯,憑印象寫的。
解決問題
- 經過百度搜索一番才發現,並不是這麼幹的。原來是語法寫錯了,根本就沒有我那樣的寫法。
- 從搜尋結果來看,有不少小夥伴都有過我這種類似的寫法,看來這個現象還是會經常發生的,一不留神就寫錯了。
- 究其根本,還是對基礎語法掌握的不熟練,否則怎麼可能犯這種低階的錯誤呢?
正確的書寫語法如下:
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log(month+"月有31天");
break;
case 4:
case 6:
case 9:
case 11:
console.log(month+"月有30天");
break;
default:
console.log(month+"月有28天");
}
看到這,我才恍然大悟, 合併多個相同功能的 case 語句
原來是這麼寫的。
//這才是正確的寫法
case 1:
case 3:
case 5 :
case 7:
//code...
break;
結束語
至此,問題就已經被解決了。
switch
結構說明:
switch、case、break、default
都是系統關鍵字,都必須全小寫。switch
後的小括號( )
:小括號內一般是一個變數名,這個變數可能會有不同的取值。- 每個
case
的值都會與變數的值進行對比,看是否相等,如果一致就執行該case
語句對應的程式碼。 - 所有的
case
都是“或”(or)
的關係,每時每刻只有一個case
會滿足條件。 - 每個
case
中的程式碼執行完畢後,必須要用break
語句來阻止程式碼自動地向下一個case
執行。 - 如果不寫
break
語句的話,下面所有的case
語句都會執行一遍。 - 請使用
default
關鍵詞來規定匹配不存在時做的事情。可省略不寫。
switch
工作原理:
- 首先設定表示式
n
(通常是一個變數)。 - 隨後表示式的值會與結構中的每個
case
的值做比較。如果存在匹配,則與該case
關聯的程式碼塊會被執行。 - 請使用
break
來阻止程式碼自動地向下一個case
執行。 - 請使用
default
關鍵詞來規定匹配不存在時做的事情。即匹配失敗時預設要執行的程式碼。