- Java Web從入門到精通(第2版)
- 明日科技
- 3240字
- 2020-11-28 17:38:18
3.3 流程控制語句
視頻講解:光盤\TM\lx\3\07流程控制語句.mp4
流程控制語句對于任何一門編程語言都是至關重要的,JavaScript也不例外。在JavaScript中提供了if條件判斷語句、switch多分支語句、for循環語句、while循環語句、do…while循環語句、break語句和continue語句7種流程控制語句。
3.3.1 if條件判斷語句
if條件判斷語句是最基本、最常用的流程控制語句,可以根據條件表達式的值執行相應的處理。if語句的語法格式如下:
if(expression){ statement 1 }else{ statement 2 }
參數說明:
expression:必選項。用于指定條件表達式,可以使用邏輯運算符。
statement 1:用于指定要執行的語句序列。當expression的值為true時,執行該語句序列。
statement 2:用于指定要執行的語句序列。當expression的值為false時,執行該語句序列。
if...else條件判斷語句的執行流程如圖3.4所示。

圖3.4 if...else條件判斷語句的執行流程
說明
上述if語句是典型的二路分支結構。其中else部分可以省略,而且statement1為單一語句時,其兩邊的大括號也可以省略。
例如,下面3段代碼的執行結果是一樣的,都可以計算2月份的天數。

if語句是一種使用很靈活的語句,除了可以使用if...else的形式外,還可以使用if...else if的形式。if...else if語句的語法格式如下:
if (expression 1){ statement 1 }else if(expression 2){ statement 2 } … else if(expression n){ statement n }else{ statement n+1 }
if...else if語句的執行流程如圖3.5所示。

圖3.5 if...else if語句的執行流程
【例3.18】應用if語句驗證用戶登錄信息。(實例位置:光盤\TM\sl\3\2)
(1)在頁面中添加用戶登錄表單及表單元素。具體代碼如下:
<form name="form1" method="post" action=""> 用戶名:<input name="user" type="text" id="user"> 密碼:<input name="pwd" type="text" id="pwd"> <input name="Button" type="button" class="btn_grey" value="登錄"> <input name="Submit2" type="reset" class="btn_grey" value="重置"> </form>
(2)編寫自定義的JavaScript函數check(),用if語句驗證登錄信息是否為空。check()函數的具體代碼如下:
<script language="javascript"> function check(){ if(form1.user.value==""){ //判斷用戶名是否為空 alert("請輸入用戶名!"); form1.user.focus(); return; }else if(form1.pwd.value==""){ //判斷密碼是否為空 alert("請輸入密碼!"); form1.pwd.focus(); return; }else{ form1.submit(); //提交表單 } } </script>
(3)在“登錄”按鈕的onclick事件中調用check()函數。具體代碼如下:
<input name="Button" type="button" class="btn_grey" value="登錄" onclick="check()">

圖3.6 運行結果
運行程序,單擊“登錄”按鈕,將顯示如圖3.6所示的提示對話框。
說明
同Java語言一樣,JavaScript的if語句也可以嵌套使用。由于JavaScript中if語句的嵌套方式同Java語言基本相同,在此不再贅述。
3.3.2 switch多分支語句
switch是典型的多路分支語句,其作用與嵌套使用if語句基本相同。switch語句比if語句更具有可讀性,而且允許在找不到一個匹配條件的情況下執行一組默認的語句。switch語句的語法格式如下:
switch (expression){ case judgement 1: statement 1; break; case judgement 2: statement 2; break; … case judgement n: statement n; break; default: statement n+1; break; }
參數說明:
expression:任意的表達式或變量。
judgement:任意的常數表達式。當expression的值與某個judgement的值相等時,就執行此case后的statement語句;如果expression的值與所有judgement的值都不相等,則執行default后面的statement語句。
break:用于結束switch語句,從而使JavaScript只執行匹配的分支。如果沒有break語句,則該switch語句的所有分支都將被執行,switch語句也就失去了使用的意義。
switch語句的執行流程如圖3.7所示。

圖3.7 switch語句的執行流程
【例3.19】應用switch語句輸出今天是星期幾。(實例位置:光盤\TM\sl\3\3)
關鍵代碼如下:
<script language="javascript"> var now=new Date(); //獲取系統日期 var day=now.getDay(); //獲取星期 var week; switch (day){ case 1: week="星期一"; break; case 2: week="星期二"; break; case 3: week="星期三"; break; case 4: week="星期四"; break; case 5: week="星期五"; break; case 6: week="星期六"; break; default: week="星期日"; break; } document.write("今天是"+week); //輸出中文的星期 </script>
程序的運行結果如圖3.8所示。

圖3.8 實例運行結果
技巧
在程序開發的過程中,使用if語句還是使用switch語句,可以根據實際情況而定。盡量做到物盡其用,不要因為switch語句的效率高,就一味地使用;也不要因為if語句常用,就懶得應用switch語句。要根據實際情況,具體問題具體分析,使用最適合的條件語句。一般情況下,對于判斷條件較少的可以使用if條件語句,但是在實現一些多條件的判斷中,就應該使用switch語句。
3.3.3 for循環語句
for循環語句也稱為計次循環語句,一般用于循環次數已知的情況,在JavaScript中應用比較廣泛。for循環語句的語法格式如下:
for(initialize; test; increment){ statement }
參數說明:
initialize:初始化語句,用來對循環變量進行初始化賦值。
test:循環條件,一個包含比較運算符的表達式,用來限定循環變量的邊限。如果循環變量超過了該邊限,則停止該循環語句的執行。
increment:用來指定循環變量的步幅。
statement:用來指定循環體,在循環條件的結果為true時,重復執行。
說明
for循環語句執行的過程是:先執行初始化語句,然后判斷循環條件,如果循環條件的結果為true,則執行一次循環體,否則直接退出循環。然后執行迭代語句,改變循環變量的值。至此,完成一次循環。接下來,將進行下一次循環,直到循環條件的結果為false,才結束循環。
for循環語句的執行流程如圖3.9所示。

圖3.9 for循環語句的執行流程
說明
在for語句中可以使用break語句來中止循環語句的執行,關于break語句的用法參見3.3.6節。
為了使讀者更好地理解for語句,下面將以一個具體的實例介紹for語句的應用。
【例3.20】計算100以內所有奇數的和。(實例位置:光盤\TM\sl\3\4)
關鍵代碼如下:

程序運行結果如圖3.10所示。

圖3.10 運行結果
說明
在使用for語句時,一定要保證循環可以正常結束,也就是必須保證循環條件的結果存在為true的情況。否則,循環體將無休止地執行下去,從而形成死循環。例如,下面的循環語句就會造成死循環,原因是i永遠大于等于1。
for(i=1; i>=1; i++){ alert(i); }
3.3.4 while循環語句
while循環語句也稱為前測試循環語句,它是利用一個條件來控制是否要繼續重復執行這個語句。while循環語句與for循環語句相比,無論是語法還是執行的流程,都較為簡明易懂。while循環語句的語法格式如下:
while(expression){ statement }
參數說明:
expression:一個包含比較運算符的條件表達式,用來指定循環條件。
statement:用來指定循環體,在循環條件的結果為true時,重復執行。
說明
while循環語句之所以命名為前測試循環,是因為它要先判斷此循環的條件是否成立,然后再進行重復執行的操作。也就是說,while循環語句執行的過程是先判斷條件表達式,如果條件表達式的值為true,則執行循環體,并且在循環體執行完畢后,進入下一次循環,否則退出循環。
while循環語句的執行流程如圖3.11所示。

圖3.11 while循環語句的執行流程
注意
在使用while語句時,也一定要保證循環可以正常結束,即必須保證條件表達式的值存在為true的情況,否則將形成死循環。例如,下面的循環語句就會造成死循環,原因是i永遠都小于100。
var i=1; while(i<=100){ alert(i); //輸出i的值 }
while循環語句經常用于循環執行的次數不確定的情況下。
【例3.21】列舉出累加和不大于10的所有自然數。(實例位置:光盤\TM\sl\3\5)
關鍵代碼如下:
<script language="javascript"> var i=1; //由于是計算自然數,所以i的初始值設置為1 var sum=i; var result=""; document.write("累加和不大于10的所有自然數為:<br>"); while(sum<10){ sum=sum+i; //累加i的值 document.write(i+'<br>'); //輸出符合條件的自然數 i++; //該語句一定不要少 } </script>
程序運行結果如圖3.12所示。

圖3.12 列舉累加和不大于10的所有自然數
3.3.5 do…while循環語句
do…while循環語句也稱為后測試循環語句,它也是利用一個條件來控制是否要繼續重復執行這個語句。與while循環不同的是,它先執行一次循環語句,然后再去判斷是否繼續執行。do…while循環語句的語法格式如下:
do{ statement } while(expression);
參數說明:
statement:用來指定循環體,循環開始時先被執行一次,然后在循環條件的結果為true時,重復執行。
expression:一個包含比較運算符的條件表達式,用來指定循環條件。
說明
do…while循環語句執行的過程是:先執行一次循環體,然后再判斷條件表達式,如果條件表達式的值為true,則繼續執行,否則退出循環。也就是說,do…while循環語句中的循環體至少被執行一次。
do…while循環語句的執行流程如圖3.13所示。

圖3.13 do…while循環語句的執行流程
do…while循環語句同while循環語句類似,也常用于循環執行的次數不確定的情況下。
【例3.22】應用do…while循環語句列舉出累加和不大于10的所有自然數。(實例位置:光盤\TM\sl\3\6)
關鍵代碼如下:
<script language="javascript"> var sum=0; var i=1; //由于是計算自然數,所以i的初始值設置為1 document.write("累加和不大于10的所有自然數為:<br>"); do{ sum=sum+i; //累加i的值 document.write(i+'<br>'); //輸出符合條件的自然數 i++; //該語句一定不要少 }while(sum<10); </script>
程序運行結果如圖3.14所示。

圖3.14 累加和不大于10的所有自然數
3.3.6 break與continue語句
break語句與continue語句都可以用于跳出循環,但兩者也存在著一些區別。下面將詳細介紹這兩個關鍵字的用法。
break語句
break語句用于退出包含在最內層的循環或者退出一個switch語句。break語句的語法格式如下:
break;
說明
break語句通常用在for、while、do…while或switch語句中。
【例3.23】在for語句中通過break語句中斷循環。代碼如下:
var sum=0; for ( i=0; i<100; i++ ) { sum+=i; if (sum>10)break; //如果sum>10,就會立即跳出循環 } document.write("0至"+i+"(包括"+i+")之間自然數的累加和為:"+sum);
運行結果為:“0至5(包括5)之間自然數的累加和為:15”。
continue語句
continue語句和break語句類似,所不同的是,continue語句用于中止本次循環,直接開始下一次循環。其語法格式如下:
continue;
說明
continue語句只能應用在while、for、do… while和switch語句中。
【例3.24】在for語句中通過continue語句計算金額大于等于1000的數據的和。代碼如下:
var total=0; var sum=new Array(1000,1200,100,600,736,1107,1205); //聲明一個一維數組 for ( i=0; i<sum.length; i++ ) { if (sum[i]<1000)continue; //不計算金額小于1000的數據 total+=sum[i]; } document.write("累加和為:"+total); //輸出計算結果
運行結果為:“累加和為:4512”。
說明
當使用continue語句中止本次循環后,如果循環條件的結果為false,則退出循環,否則繼續下一次循環。
- Android應用程序開發與典型案例
- Visual C++串口通信開發入門與編程實踐
- PHP 從入門到項目實踐(超值版)
- 組態軟件技術與應用
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- Vue.js 2 Web Development Projects
- 編寫高質量代碼:改善Objective-C程序的61個建議
- 持續集成與持續交付實戰:用Jenkins、Travis CI和CircleCI構建和發布大規模高質量軟件
- Scala編程(第5版)
- MySQL程序員面試筆試寶典
- Everyday Data Structures
- Python自然語言理解:自然語言理解系統開發與應用實戰
- 前端架構設計
- Enterprise Application Architecture with .NET Core
- 編譯原理學習與實踐指導