我讀JavaScript權威參考,並說93頁:有人可以舉一個例子讓switch語句使用多個case語句嗎?
在少數情況下,編寫代碼,像這樣的下降 通過從一個case標籤到下是有用,但99%的時間你應該非常小心地結束每個案例中的一個交換中斷 聲明。
您會在什麼情況下讓switch語句落入多個case語句?
我讀JavaScript權威參考,並說93頁:有人可以舉一個例子讓switch語句使用多個case語句嗎?
在少數情況下,編寫代碼,像這樣的下降 通過從一個case標籤到下是有用,但99%的時間你應該非常小心地結束每個案例中的一個交換中斷 聲明。
您會在什麼情況下讓switch語句落入多個case語句?
一個有用的情況是,當幾個值應該有相同的結果:
switch (value) {
case 1:
case 2:
action1();
break;
case 3:
case 4:
case 5:
action2();
break;
}
空的情況下降到下一個。在這種情況下,混淆的風險很小。
,這本書的作者是擔心的情況是,當你把行動,例如當值2
應該有兩個action2
和action3
:
switch (value) {
case 1:
action1();
break;
case 2:
action2();
// continue with action3
case 3:
action3();
break;
}
忘記一個break
是這樣一個共同的錯誤,就是你應該添加類似上面的評論以明確說明它被故意排除在外。
爲了比較,在C#中,您不允許在switch
中忽略break
,您必須使用goto
來指定執行應繼續的情況。
switch(val) {
case "aa":
case "bb":
// do you thing here
break;
}
我沒有做到這一點的唯一的一次是當用戶輸入首選大寫形式,但在較低的情況下,可以接受的:
switch(input){
case 'a':
print "Please use uppercase next time";
case 'A':
//do stuff here
break;
}
當你有多個案例,都應該得到相同的代碼這當然是可以接受的。請記住,如果前一個沒有break
語句,則將執行下一個case
塊。這很有用,但也會造成混淆(即缺少break
語句會導致錯誤)。 當使用它是主觀的,但基本上當你的狀態就像是一個or
表達式,你可以使用它:
if(myvar == x || myvar == y) {
// do A
} else if (myvar == w || myvar == z) {
// do B
} else {
// do C
}
可以改寫爲:
switch(myvar) {
case x:
case y:
// do A
break;
case w:
case z:
// do B
break;
default:
// do C
break;
}
}
我覺得這本書應該有堅持事實,而不是發出這樣的建議:
真實,雖然JavaScript的'print'方法用於打印頁面,而不是輸出字符串。 – Utkanos