書名: JavaScript從入門到精通(微視頻精編版)作者名: 明日科技本章字數: 3633字更新時間: 2020-09-01 15:02:22
3.1 條件判斷語句

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

圖3.1 簡單if語句的執行流程
在簡單if語句中,首先對表達式的值進行判斷,如果它的值是true,則執行相應的語句,否則就不執行。
例如,根據比較兩個變量的值,判斷是否輸出比較結果。代碼如下:
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 }
運行結果為:
a大于b
說明
當要執行的語句為單一語句時,其兩邊的大括號可以省略。
例如,下面的這段代碼和上面代碼的執行結果是一樣的,都可以輸出“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個數字10、20、30分別定義在變量中,應用簡單if語句獲取這3個數中的最大值。代碼如下:(實例位置:資源包\源碼\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; //假設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+"三個數的最大值為"+maxValue); //輸出結果 14 </script>
運行結果如圖3.2所示。

圖3.2 獲取3個數中的最大值
2.if…else語句
if…else語句是if語句的標準形式,在if語句簡單形式的基礎之上增加一個else從句,當表達式的值是false時則執行else從句中的內容。
語法如下:
if(表達式){ 語句1 }else{ 語句2 }
參數說明。
表達式:必選項,用于指定條件表達式,可以使用邏輯運算符。
語句1:用于指定要執行的語句序列。當表達式的值為true時,執行該語句序列。
語句2:用于指定要執行的語句序列。當表達式的值為false時,執行該語句序列。
if...else語句的執行流程如圖3.3所示。

圖3.3 if...else語句的執行流程
在if語句的標準形式中,首先對表達式的值進行判斷,如果它的值是true,則執行語句1中的內容,否則執行語句2中的內容。
例如,根據比較兩個變量的值,輸出比較的結果。代碼如下:
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 }
運行結果為:
a小于b
說明
上述if語句是典型的二路分支結構。當語句1、語句2為單一語句時,其兩邊的大括號也可以省略。
例如,上面代碼中的大括號也可以省略,程序的執行結果是不變的,代碼如下:
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天。應用if…else語句判斷2010年2月份的天數。代碼如下:(實例位置:資源包\源碼\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月份的天數為"+month+"天"); //輸出結果 10 </script>
運行結果如圖3.4所示。

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

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

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

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

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

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

圖3.10 輸出獎項和獎品
說明
在程序開發的過程中,使用if語句還是使用switch語句可以根據實際情況而定,盡量做到物盡其用,不要因為switch語句的效率高就一味地使用,也不要因為if語句常用就不應用switch語句。要根據實際的情況,具體問題具體分析,使用最適合的條件語句。一般情況下,對于判斷條件較少的可以使用if條件語句,但是在實現一些多條件的判斷中,就應該使用switch語句。
- 程序員修煉之道:程序設計入門30講
- Learning Apex Programming
- Python語言程序設計
- Mastering Ubuntu Server
- Elastic Stack應用寶典
- Windows Server 2016 Automation with PowerShell Cookbook(Second Edition)
- Node.js全程實例
- Express Web Application Development
- 編程菜鳥學Python數據分析
- Natural Language Processing with Python Quick Start Guide
- PHP+MySQL動態網站開發從入門到精通(視頻教學版)
- 視窗軟件設計和開發自動化:可視化D++語言
- 從零開始學算法:基于Python
- Oracle SOA Suite 12c Administrator's Guide
- HTML5 Boilerplate Web Development