- JavaScript從入門(mén)到精通(微視頻精編版)
- 明日科技
- 3633字
- 2020-09-01 15:02:22
3.1 條件判斷語(yǔ)句

視頻講解
在日常生活中,人們可能會(huì)根據(jù)不同的條件做出不同的選擇。例如,根據(jù)路標(biāo)選擇走哪條路,根據(jù)第二天的天氣情況選擇做什么事情。在編寫(xiě)程序的過(guò)程中也經(jīng)常會(huì)遇到這樣的情況,這時(shí)就需要使用條件判斷語(yǔ)句。所謂條件判斷語(yǔ)句就是對(duì)語(yǔ)句中不同條件的值進(jìn)行判斷,進(jìn)而根據(jù)不同的條件執(zhí)行不同的語(yǔ)句。條件判斷語(yǔ)句主要包括兩類:一類是if語(yǔ)句,另一類是switch語(yǔ)句。下面對(duì)這兩種類型的條件判斷語(yǔ)句進(jìn)行詳細(xì)的講解。
3.1.1 if語(yǔ)句
if語(yǔ)句是最基本、最常用的條件判斷語(yǔ)句,通過(guò)判斷條件表達(dá)式的值來(lái)確定是否執(zhí)行一段語(yǔ)句,或者選擇執(zhí)行哪部分語(yǔ)句。
1.簡(jiǎn)單if語(yǔ)句
在實(shí)際應(yīng)用中,if語(yǔ)句有多種表現(xiàn)形式。簡(jiǎn)單if語(yǔ)句的語(yǔ)法格式如下:
if(表達(dá)式){ 語(yǔ)句 }
參數(shù)說(shuō)明。
表達(dá)式:必選項(xiàng),用于指定條件表達(dá)式,可以使用邏輯運(yùn)算符。
語(yǔ)句:用于指定要執(zhí)行的語(yǔ)句序列,可以是一條或多條語(yǔ)句。當(dāng)表達(dá)式的值為true時(shí),執(zhí)行該語(yǔ)句序列。
簡(jiǎn)單if語(yǔ)句的執(zhí)行流程如圖3.1所示。

圖3.1 簡(jiǎn)單if語(yǔ)句的執(zhí)行流程
在簡(jiǎn)單if語(yǔ)句中,首先對(duì)表達(dá)式的值進(jìn)行判斷,如果它的值是true,則執(zhí)行相應(yīng)的語(yǔ)句,否則就不執(zhí)行。
例如,根據(jù)比較兩個(gè)變量的值,判斷是否輸出比較結(jié)果。代碼如下:
01 var a=200; //定義變量a,值為200 02 var b=100; //定義變量b,值為100 03 if(a>b){ //判斷變量a的值是否大于變量b的值 04 document.write("a大于b"); //輸出a大于b 05 } 06 if(a<b){ //判斷變量a的值是否小于變量b的值 07 document.write("a小于b"); //輸出a小于b 08 }
運(yùn)行結(jié)果為:
a大于b
說(shuō)明
當(dāng)要執(zhí)行的語(yǔ)句為單一語(yǔ)句時(shí),其兩邊的大括號(hào)可以省略。
例如,下面的這段代碼和上面代碼的執(zhí)行結(jié)果是一樣的,都可以輸出“a大于b”。
01 var a=200; //定義變量a,值為200 02 var b=100; //定義變量b,值為100 03 if(a>b) //判斷變量a的值是否大于變量b的值 04 document.write("a大于b"); //輸出a大于b 05 if(a<b) //判斷變量a的值是否小于變量b的值 06 document.write("a小于b"); //輸出a小于b
【例3.01】將3個(gè)數(shù)字10、20、30分別定義在變量中,應(yīng)用簡(jiǎn)單if語(yǔ)句獲取這3個(gè)數(shù)中的最大值。代碼如下:(實(shí)例位置:資源包\源碼\03\3.01)
01 <script type="text/javascript"> 02 var a,b,c,maxValue; //聲明變量 03 a=10; //為變量賦值 04 b=20; //為變量賦值 05 c=30; //為變量賦值 06 maxValue=a; //假設(shè)a的值最大,定義a為最大值 07 if(maxValue<b){ //如果最大值小于b 08 maxValue=b; //定義b為最大值 09 } 10 if(maxValue<c){ //如果最大值小于c 11 maxValue=c; //定義c為最大值 12 } 13 alert(a+"、"+b+"、"+c+"三個(gè)數(shù)的最大值為"+maxValue); //輸出結(jié)果 14 </script>
運(yùn)行結(jié)果如圖3.2所示。

圖3.2 獲取3個(gè)數(shù)中的最大值
2.if…else語(yǔ)句
if…else語(yǔ)句是if語(yǔ)句的標(biāo)準(zhǔn)形式,在if語(yǔ)句簡(jiǎn)單形式的基礎(chǔ)之上增加一個(gè)else從句,當(dāng)表達(dá)式的值是false時(shí)則執(zhí)行else從句中的內(nèi)容。
語(yǔ)法如下:
if(表達(dá)式){ 語(yǔ)句1 }else{ 語(yǔ)句2 }
參數(shù)說(shuō)明。
表達(dá)式:必選項(xiàng),用于指定條件表達(dá)式,可以使用邏輯運(yùn)算符。
語(yǔ)句1:用于指定要執(zhí)行的語(yǔ)句序列。當(dāng)表達(dá)式的值為true時(shí),執(zhí)行該語(yǔ)句序列。
語(yǔ)句2:用于指定要執(zhí)行的語(yǔ)句序列。當(dāng)表達(dá)式的值為false時(shí),執(zhí)行該語(yǔ)句序列。
if...else語(yǔ)句的執(zhí)行流程如圖3.3所示。

圖3.3 if...else語(yǔ)句的執(zhí)行流程
在if語(yǔ)句的標(biāo)準(zhǔn)形式中,首先對(duì)表達(dá)式的值進(jìn)行判斷,如果它的值是true,則執(zhí)行語(yǔ)句1中的內(nèi)容,否則執(zhí)行語(yǔ)句2中的內(nèi)容。
例如,根據(jù)比較兩個(gè)變量的值,輸出比較的結(jié)果。代碼如下:
01 var a=100; //定義變量a,值為100 02 var b=200; //定義變量b,值為200 03 if(a>b){ //判斷變量a的值是否大于變量b的值 04 document.write("a大于b"); //輸出a大于b 05 }else{ 06 document.write("a小于b"); //輸出a小于b 07 }
運(yùn)行結(jié)果為:
a小于b
說(shuō)明
上述if語(yǔ)句是典型的二路分支結(jié)構(gòu)。當(dāng)語(yǔ)句1、語(yǔ)句2為單一語(yǔ)句時(shí),其兩邊的大括號(hào)也可以省略。
例如,上面代碼中的大括號(hào)也可以省略,程序的執(zhí)行結(jié)果是不變的,代碼如下:
01 var a=100; //定義變量a,值為100 02 var b=200; //定義變量b,值為200 03 if(a>b) //判斷變量a的值是否大于變量b的值 04 document.write("a大于b"); //輸出a大于b 05 else 06 document.write("a小于b"); //輸出a小于b
【例3.02】如果某一年是閏年,那么這一年的2月份就有29天,否則這一年的2月份就有28天。應(yīng)用if…else語(yǔ)句判斷2010年2月份的天數(shù)。代碼如下:(實(shí)例位置:資源包\源碼\03\3.02)
01 <script type="text/javascript"> 02 var year=2010; //定義變量 03 var month=0; //定義變量 04 if((year%4==0 && year%100!=0)||year%400==0){ //判斷指定年是否為閏年 05 month=29; //為變量賦值 06 }else{ 07 month=28; //為變量賦值 08 } 09 alert("2010年2月份的天數(shù)為"+month+"天"); //輸出結(jié)果 10 </script>
運(yùn)行結(jié)果如圖3.4所示。

圖3.4 輸出2010年2月份的天數(shù)
3.if…else if語(yǔ)句
if語(yǔ)句是一種使用很靈活的語(yǔ)句,除了可以使用if...else語(yǔ)句的形式,還可以使用if...else if語(yǔ)句的形式。這種形式可以進(jìn)行更多的條件判斷,不同的條件對(duì)應(yīng)不同的語(yǔ)句。if...else if語(yǔ)句的語(yǔ)法格式如下:
if (表達(dá)式1){ 語(yǔ)句1 }else if(表達(dá)式2){ 語(yǔ)句2 } … else if(表達(dá)式n){ 語(yǔ)句n }else{ 語(yǔ)句n+1 }
if...else if語(yǔ)句的執(zhí)行流程如圖3.5所示。

圖3.5 if...else if語(yǔ)句的執(zhí)行流程
【例3.03】將某學(xué)校的學(xué)生成績(jī)轉(zhuǎn)化為不同等級(jí),劃分標(biāo)準(zhǔn)如下:
① “優(yōu)秀”,大于等于90分。
② “良好”,大于等于75分。
③ “及格”,大于等于60分。
④ “不及格”,小于60分。
假設(shè)周星星的考試成績(jī)是85分,輸出該成績(jī)對(duì)應(yīng)的等級(jí)。其關(guān)鍵代碼如下:(實(shí)例位置:資源包\源碼\03\3.03)
01 <script type="text/javascript"> 02 var grade = ""; //定義表示等級(jí)的變量 03 var score = 85; //定義表示分?jǐn)?shù)的變量score值為85 04 if(score>=90){ //如果分?jǐn)?shù)大于等于90 05 grade = "優(yōu)秀"; //將"優(yōu)秀"賦值給變量grade 06 }else if(score>=75){ //如果分?jǐn)?shù)大于等于75 07 grade = "良好"; //將"良好"賦值給變量grade 08 }else if(score>=60){ //如果分?jǐn)?shù)大于等于60 09 grade = "及格"; //將"及格"賦值給變量grade 10 }else{ //如果score的值不符合上述條件 11 grade = "不及格"; //將"不及格"賦值給變量grade 12 } 13 alert("周星星的考試成績(jī)"+grade); //輸出考試成績(jī)對(duì)應(yīng)的等級(jí) 14 </script>
運(yùn)行結(jié)果如圖3.6所示。

圖3.6 輸出考試成績(jī)對(duì)應(yīng)的等級(jí)
4.if語(yǔ)句的嵌套
if語(yǔ)句不但可以單獨(dú)使用,而且可以嵌套應(yīng)用,即在if語(yǔ)句的從句部分嵌套另外一個(gè)完整的if語(yǔ)句。基本語(yǔ)法格式如下:
if (表達(dá)式1){ if(表達(dá)式2){ 語(yǔ)句1 }else{ 語(yǔ)句2 } }else{ if(表達(dá)式3){ 語(yǔ)句3 }else{ 語(yǔ)句4 } }
例如,某考生的高考總分是620,英語(yǔ)成績(jī)是120。假設(shè)重點(diǎn)本科的錄取分?jǐn)?shù)線是600,而英語(yǔ)分?jǐn)?shù)必須在130以上才可以報(bào)考外國(guó)語(yǔ)大學(xué),應(yīng)用if語(yǔ)句的嵌套判斷該考生能否報(bào)考外國(guó)語(yǔ)大學(xué),代碼如下:
01 var totalscore=620; //定義總分變量 02 var englishscore=120; //定義英語(yǔ)分?jǐn)?shù)變量 03 if(totalscore>600){ //如果總分大于600 04 if(englishscore>130){ //如果英語(yǔ)分?jǐn)?shù)大于130 05 alert("該考生可以報(bào)考外國(guó)語(yǔ)大學(xué)"); //輸出字符串 06 }else{ 07 alert("該考生可以報(bào)考重點(diǎn)本科,但不能報(bào)考外國(guó)語(yǔ)大學(xué)"); //輸出字符串 08 } 09 }else{ 10 if(totalscore>500){ //如果總分大于500 11 alert("該考生可以報(bào)考普通本科"); //輸出字符串 12 }else{ 13 alert("該考生只能報(bào)考專科"); //輸出字符串 14 } 15 }
運(yùn)行結(jié)果如圖3.7所示。

圖3.7 輸出該考生能否報(bào)考外國(guó)語(yǔ)大學(xué)
說(shuō)明
在使用嵌套的if語(yǔ)句時(shí),最好使用大括號(hào){}來(lái)確定相互之間的層次關(guān)系。否則,由于大括號(hào){}使用位置的不同,可能導(dǎo)致程序代碼的含義完全不同,從而輸出不同的內(nèi)容。
【例3.04】假設(shè)某工種的男職工60歲退休,女職工55歲退休,應(yīng)用if語(yǔ)句的嵌套來(lái)判斷一位58歲的女職工是否已經(jīng)退休。代碼如下:(實(shí)例位置:資源包\源碼\03\3.04)
01 <script type="text/javascript"> 02 var sex="女"; //定義表示性別的變量 03 var age=58; //定義表示年齡的變量 04 if(sex=="男"){ //如果是男職工就執(zhí)行下面的內(nèi)容 05 if(age>=60){ //如果男職工在60歲以上 06 alert("該男職工已經(jīng)退休"+(age-60)+"年"); //輸出字符串 07 }else{ //如果男職工在60歲以下 08 alert("該男職工并未退休"); //輸出字符串 09 } 10 }else{ //如果是女職工就執(zhí)行下面的內(nèi)容 11 if(age>=55){ //如果女職工在55歲以上 12 alert("該女職工已經(jīng)退休"+(age-55)+"年"); //輸出字符串 13 }else{ //如果女職工在55歲以下 14 alert("該女職工并未退休"); //輸出字符串 15 } 16 } 17 </script>
運(yùn)行結(jié)果如圖3.8所示。

圖3.8 輸出該女職工是否已退休
3.1.2 switch語(yǔ)句
switch是典型的多路分支語(yǔ)句,其作用與if...else if語(yǔ)句基本相同,但switch語(yǔ)句比if...else if語(yǔ)句更具有可讀性,它根據(jù)一個(gè)表達(dá)式的值,選擇不同的分支執(zhí)行。而且switch語(yǔ)句允許在找不到一個(gè)匹配條件的情況下執(zhí)行默認(rèn)的一組語(yǔ)句。switch語(yǔ)句的語(yǔ)法格式如下:
switch (表達(dá)式){ case 常量表達(dá)式1: 語(yǔ)句1; break; case 常量表達(dá)式2: 語(yǔ)句2; break; … case 常量表達(dá)式n: 語(yǔ)句n; break; default: 語(yǔ)句n+1; break; }
參數(shù)說(shuō)明。
表達(dá)式:任意的表達(dá)式或變量。
常量表達(dá)式:任意的常量或常量表達(dá)式。當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),就執(zhí)行此case后相應(yīng)的語(yǔ)句;如果表達(dá)式的值與所有的常量表達(dá)式的值都不相等,則執(zhí)行default后面相應(yīng)的語(yǔ)句。
break:用于結(jié)束switch語(yǔ)句,從而使JavaScript只執(zhí)行匹配的分支。如果沒(méi)有了break語(yǔ)句,則該匹配分支之后的所有分支都將被執(zhí)行,switch語(yǔ)句也就失去了使用的意義。
switch語(yǔ)句的執(zhí)行流程如圖3.9所示。

圖3.9 switch語(yǔ)句的執(zhí)行流程
說(shuō)明
default語(yǔ)句可以省略。在表達(dá)式的值不能與任何一個(gè)case語(yǔ)句中的值相匹配的情況下,JavaScript會(huì)直接結(jié)束switch語(yǔ)句,不進(jìn)行任何操作。
注意
case后面常量表達(dá)式的數(shù)據(jù)類型必須與表達(dá)式的數(shù)據(jù)類型相同,否則匹配會(huì)全部失敗,而去執(zhí)行default語(yǔ)句中的內(nèi)容。
【例3.05】某公司年會(huì)舉行抽獎(jiǎng)活動(dòng),中獎(jiǎng)號(hào)碼及其對(duì)應(yīng)的獎(jiǎng)品設(shè)置如下:
① “1”代表“一等獎(jiǎng)”,獎(jiǎng)品是“華為手機(jī)”。
② “2”代表“二等獎(jiǎng)”,獎(jiǎng)品是“光波爐”。
③ “3”代表“三等獎(jiǎng)”,獎(jiǎng)品是“電飯煲”。
④其他號(hào)碼代表“安慰獎(jiǎng)”,獎(jiǎng)品是“16G-U盤(pán)”。
假設(shè)某員工抽中的獎(jiǎng)號(hào)為3,輸出該員工抽中的獎(jiǎng)項(xiàng)級(jí)別以及所獲得的獎(jiǎng)品。代碼如下:(實(shí)例位置:資源包\源碼\03\3.05)
01 <script type="text/javascript"> 02 var grade=""; //定義表示獎(jiǎng)項(xiàng)級(jí)別的變量 03 var prize=""; //定義表示獎(jiǎng)品的變量 04 var code=3; //定義表示中獎(jiǎng)號(hào)碼的變量值為3 05 switch(code){ 06 case 1: //如果中獎(jiǎng)號(hào)碼為1 07 grade="一等獎(jiǎng)"; //定義獎(jiǎng)項(xiàng)級(jí)別 08 prize="華為手機(jī)"; //定義獲得的獎(jiǎng)品 09 break; //退出switch語(yǔ)句 10 case 2: //如果中獎(jiǎng)號(hào)碼為2 11 grade="二等獎(jiǎng)"; //定義獎(jiǎng)項(xiàng)級(jí)別 12 prize="光波爐"; //定義獲得的獎(jiǎng)品 13 break; //退出switch語(yǔ)句 14 case 3: //如果中獎(jiǎng)號(hào)碼為3 15 grade="三等獎(jiǎng)"; //定義獎(jiǎng)項(xiàng)級(jí)別 16 prize="電飯煲"; //定義獲得的獎(jiǎng)品 17 break; //退出switch語(yǔ)句 18 default: //如果中獎(jiǎng)號(hào)碼為其他號(hào)碼 19 grade="安慰獎(jiǎng)"; //定義獎(jiǎng)項(xiàng)級(jí)別 20 prize="16G-U盤(pán)"; //定義獲得的獎(jiǎng)品 21 break; //退出switch語(yǔ)句 22 } 23 document.write("該員工獲得了"+grade+"<br>獎(jiǎng)品是"+prize); //輸出獎(jiǎng)項(xiàng)級(jí)別和獲得的獎(jiǎng)品 24 </script>
運(yùn)行結(jié)果如圖3.10所示。

圖3.10 輸出獎(jiǎng)項(xiàng)和獎(jiǎng)品
說(shuō)明
在程序開(kāi)發(fā)的過(guò)程中,使用if語(yǔ)句還是使用switch語(yǔ)句可以根據(jù)實(shí)際情況而定,盡量做到物盡其用,不要因?yàn)閟witch語(yǔ)句的效率高就一味地使用,也不要因?yàn)閕f語(yǔ)句常用就不應(yīng)用switch語(yǔ)句。要根據(jù)實(shí)際的情況,具體問(wèn)題具體分析,使用最適合的條件語(yǔ)句。一般情況下,對(duì)于判斷條件較少的可以使用if條件語(yǔ)句,但是在實(shí)現(xiàn)一些多條件的判斷中,就應(yīng)該使用switch語(yǔ)句。
- Drupal 8 Blueprints
- Python入門(mén)很簡(jiǎn)單
- Azure IoT Development Cookbook
- Java編程指南:基礎(chǔ)知識(shí)、類庫(kù)應(yīng)用及案例設(shè)計(jì)
- 前端架構(gòu):從入門(mén)到微前端
- Java:Data Science Made Easy
- Visual Basic學(xué)習(xí)手冊(cè)
- 劍指Java:核心原理與應(yīng)用實(shí)踐
- 從零開(kāi)始學(xué)Linux編程
- Python圖形化編程(微課版)
- C++語(yǔ)言程序設(shè)計(jì)
- Kotlin Programming By Example
- Learning Concurrency in Python
- Android 游戲開(kāi)發(fā)大全(第二版)
- 深入淺出 HTTPS:從原理到實(shí)戰(zhàn)