- JavaScript程序設(shè)計(jì):基礎(chǔ)·PHP·XML
- (美)Elizabeth Drake
- 1329字
- 2020-10-30 18:12:39
3.6.3 switch語(yǔ)句
為了更容易編寫多路選擇結(jié)構(gòu),JavaScript提供了一條明確為這個(gè)目的而設(shè)計(jì)的switch語(yǔ)句。這條語(yǔ)句包含一個(gè)單一測(cè)試表達(dá)式,以判斷要執(zhí)行哪一塊代碼。典型的switch語(yǔ)句看起來(lái)如下所示:
switch語(yǔ)句這樣工作:先對(duì)測(cè)試表達(dá)式求值,然后將它的值與第一個(gè)case比較,如果匹配,就執(zhí)行第一塊語(yǔ)句,然后退出這個(gè)結(jié)構(gòu),其中break關(guān)鍵字強(qiáng)迫程序跳到這個(gè)結(jié)束花括號(hào)后面的代碼行。如果在第一個(gè)case中不匹配,那么就將測(cè)試表達(dá)式的值與第二個(gè)case進(jìn)行比較,如果這里匹配就執(zhí)行第二塊語(yǔ)句,然后退出這個(gè)結(jié)構(gòu)。這個(gè)過(guò)程繼續(xù)直到發(fā)現(xiàn)測(cè)試表達(dá)式值的一個(gè)匹配或者直到所有的case結(jié)束。程序員可以寫一條默認(rèn)語(yǔ)句(即如果測(cè)試表達(dá)式不匹配任何case時(shí)要做的事情)或者不做任何動(dòng)作。在默認(rèn)情形或所有case結(jié)束之后,這個(gè)語(yǔ)句結(jié)構(gòu)退出。
switch語(yǔ)句適合于許多情形,如經(jīng)常用來(lái)創(chuàng)建菜單。在一個(gè)有許多選項(xiàng)的程序中,它提供的代碼比使用許多if...else語(yǔ)句更簡(jiǎn)潔。事實(shí)上,使用它能夠更容易編寫例3.10創(chuàng)建的評(píng)價(jià)網(wǎng)站程序,本節(jié)后面將重做這個(gè)例子。
以下例子展示當(dāng)測(cè)試條件是一串文本、單個(gè)字符或一個(gè)數(shù)字時(shí)如何使用switch語(yǔ)句。例3.13使用switch語(yǔ)句讓用戶改變網(wǎng)頁(yè)的背景顏色。
例3.13 使用switch語(yǔ)句處理頁(yè)面顏色
這個(gè)程序提示用戶錄入一種顏色,并將這個(gè)值存儲(chǔ)在變量color中。然后color用于switch語(yǔ)句中每個(gè)case的測(cè)試表達(dá)式。當(dāng)找到一個(gè)匹配時(shí),就執(zhí)行相應(yīng)的語(yǔ)句從而改變網(wǎng)頁(yè)的背景顏色,而且break語(yǔ)句導(dǎo)致程序執(zhí)行跳到第25行。可以看到,與使用if...else if語(yǔ)句相比,讀這個(gè)代碼是多么容易。此外,如果你想要包括其他顏色,那么為這個(gè)語(yǔ)句增加更多的選項(xiàng)也是非常容易的。
當(dāng)為用戶給出一個(gè)選擇菜單時(shí),經(jīng)常會(huì)使用switch語(yǔ)句。例如,用戶可能在以下選項(xiàng)中挑選一項(xiàng):再玩游戲、恢復(fù)游戲、退出游戲、選擇新游戲等。或者,如例3.14所示,用戶可能選擇執(zhí)行幾類計(jì)算中的一種。以下程序使用switch語(yǔ)句讓用戶得到某個(gè)已選形狀的面積。
例3.14 使用switch語(yǔ)句得到一個(gè)形狀的面積
注意,在每個(gè)case選項(xiàng)中可以有與你想要的一樣多的語(yǔ)句。
在JavaScript中,switch語(yǔ)句的每個(gè)case一次只能測(cè)試一件事情。換句話說(shuō),if子句能夠測(cè)試比5大的任何數(shù)字(即,if(x>5)),而switch語(yǔ)句必須分開測(cè)試每個(gè)比5大的數(shù)字。然而,有很多方法處理這種問(wèn)題。例3.15展示的程序使用switch語(yǔ)句替換例3.10展示的if...else if語(yǔ)句。
例3.15 使用switch語(yǔ)句評(píng)價(jià)一個(gè)網(wǎng)頁(yè)
通過(guò)簡(jiǎn)單地除去在case 9:和case 8:語(yǔ)句之后的break語(yǔ)句,使得當(dāng)用戶錄入8或9時(shí)程序?qū)⒆詣?dòng)執(zhí)行下一條可執(zhí)行語(yǔ)句(即case 7:語(yǔ)句)并且執(zhí)行這個(gè)case中的語(yǔ)句,直到第20行的break語(yǔ)句。如果用戶錄入5或6,將發(fā)生同樣的事情,要執(zhí)行的下一條語(yǔ)句是在第24和25行,并且結(jié)束于第26行的break語(yǔ)句。如果用戶錄入3或2,那么將出現(xiàn)類似的情形。
當(dāng)面對(duì)需要多個(gè)判斷的情形時(shí),可以選擇是否使用switch、if...else或者if...else if結(jié)構(gòu),評(píng)估哪一種結(jié)構(gòu)能夠提供最清楚、最簡(jiǎn)單的解決方案。有時(shí)候,這個(gè)選擇只是個(gè)人偏愛(ài)而已。但是,通過(guò)學(xué)習(xí)所有可用的技術(shù),你將成為一個(gè)更好的程序員。
3.6節(jié)檢查點(diǎn)
3.24 假定你要為教授編寫程序,將為學(xué)生給出的字母成績(jī)重新轉(zhuǎn)換為數(shù)字成績(jī),轉(zhuǎn)換規(guī)則是:A=95,B=85,C=75,D=65,F=50。你會(huì)為這個(gè)程序使用哪一類判斷結(jié)構(gòu)?
3.25 使用if...else if結(jié)構(gòu)編寫檢查點(diǎn)3.24描述的程序。
3.26 使用switch語(yǔ)句重新編寫檢查點(diǎn)3.24描述的程序。
3.27 為例3.13創(chuàng)建的程序添加代碼,讓用戶錄入幾種其他顏色,包括紅色、黑色和你要的任何其他顏色。
3.28 為在檢查點(diǎn)3.27創(chuàng)建的程序添加代碼,讓用戶改變網(wǎng)頁(yè)的文本顏色。
- 觸·心:DT時(shí)代的大數(shù)據(jù)精準(zhǔn)營(yíng)銷
- Visual C++實(shí)例精通
- Developing Middleware in Java EE 8
- FreeSWITCH 1.6 Cookbook
- Mastering OpenCV 4
- Python漫游數(shù)學(xué)王國(guó):高等數(shù)學(xué)、線性代數(shù)、數(shù)理統(tǒng)計(jì)及運(yùn)籌學(xué)
- Instant Ext.NET Application Development
- Flutter跨平臺(tái)開發(fā)入門與實(shí)戰(zhàn)
- Windows Phone 7.5:Building Location-aware Applications
- 深入淺出Go語(yǔ)言編程
- Unity 2018 Augmented Reality Projects
- Go語(yǔ)言從入門到精通
- Web前端開發(fā)最佳實(shí)踐
- 虛擬現(xiàn)實(shí)建模與編程(SketchUp+OSG開發(fā)技術(shù))
- Visual C++程序設(shè)計(jì)全程指南