官术网_书友最值得收藏!

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è)的文本顏色。

主站蜘蛛池模板: 铜山县| 盱眙县| 台东市| 石家庄市| 大余县| 砀山县| 铜梁县| 徐闻县| 石首市| 桐乡市| 乐都县| 桃园市| 电白县| 寿阳县| 喜德县| 北安市| 黎川县| 岳池县| 鄂温| 凌源市| 蒲城县| 金山区| 清远市| 高碑店市| 灌南县| 芜湖县| 南涧| 金寨县| 永川市| 文昌市| 临颍县| 嘉祥县| 阳高县| 磴口县| 普兰店市| 澜沧| 伊宁市| 合作市| 凯里市| 石台县| 永靖县|