我們從上一節課知道,JavaScript循環結構總有3種:
下面,我們對這些循環結構進行逐一講解。
while語句是條件判斷語句,也是循環語句。
語法:
while(條件表達式語句) { 執行語句塊; }
說明:
當“條件表達式語句”的返回值為true時,就會執行大括號“{}”中的語句塊,當執行完大括號“{}”的語句塊後,再次檢測條件表達式的返回值,如果返回值還為true,則重復執行大括號“{}”中的語句塊,直到返回值為false時,才結束整個循環過程,接著往下執行while代碼段後面的程序代碼。
舉例:計算1+2+3+…+100的值
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> var n=1; var sum=0; while(n<=100) { sum+=n; //等價於sum=sum+n; n++; } document.write("1+2+3+…+100="+sum); </script> </head> <body> </body> </html>
在浏覽器預覽效果如下:
使用while語句要注意以下幾點:
(1)應該使用大括號“{}”包含多條語句,即使是一條語句也最好使用大括號;
(2)在循環體中應該包含使得循環可以退出的語句,比如上面的“i++”。對於循環體,要是沒有條件,循環就會無休止地運作下去,變成一個“死循環”,從而可能導致浏覽器崩潰;
“do…while語句”跟while語句是非常類似的,唯一的區別在於:while語句先判斷是否符合條件,然後再執行循環體語句;do…while語句先執行循環體語句一次,然後再判斷是否符合條件。
語法:
do { 執行語句塊; } while(條件表達式語句);
說明:
do…while語句是先無條件執行循環體一次再判斷是否符合條件的,如果符合條件,則重復執行循環體,如果不符合條件,則退出循環。
do…while語句結尾處的while條件語句的括號後有一個分號“;”,該分號一定不能省略,這是初學者非常非常容易忽略的一點,大家千萬要記得呀。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> var n=1; var sum=0; do { sum+=n; //等價於sum=sum+n; n++; } while(n<=100) document.write("1+2+3+…+100="+sum); </script> </head> <body> </body> </html>
在浏覽器預覽效果如下:
分析:
大家拿上面一個例子和while語句的例子對比一下就知道,while語句和do…while語句是可以轉換的。
在此總結一下兩者之間的區別:
(1)do…while語句和while語句是可以相互轉換的;
(2)do…while語句將先執行一遍循環體中的語句,然後才判斷條件表達式的真假。這是它與while語句的本質區別;
for語句通常由2部分組成:一是“條件控制部分”,二是“循環體”。
語法:
for(初始化表達式;循環條件表達式;循環後的操作表達式) { 執行語句塊; }
說明:
在使用for循環之前要先設定一個計數器變量,可以在for循環之前定義,也可以在使用時直接進行定義。
上面的語法中,“初始化表達式”表示計數器變量的初始值;“循環條件表達式”是一個計數器變量的表達式,決定了計數器的最大值;
要想理解上面的語法,還不如直接看個例子。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> for(var i=0;i<5;i++ ) { document.write(i+"<br/>"); } </script> </head> <body> </body> </html>
在浏覽器預覽效果如下:
分析:
for(var i=0;i<5;i++ ) { document.write(i+"<br/>"); }
其實上面這段代碼等價於下面這段代碼:
while(i<5) { document.write(i+"<br/>"); i++; }
大家可以在“在線測試”的代碼中修改並測試一下效果。
對於for語句的語法形式大家可能一時接受不來,但是大家慢慢實踐多了就會記住了。
疑問1、為什麼會出現死循環?
在使用for語句時,需要保證循環可以正常結束,也就是保證循環條件的結果存在不為true的情況,否則循環體會無限地執行下去,從而出現死循環現象。
例如:
i=5; while(i!=4) { document.write(i+"<br/>"); i++; }
上面這段代碼就沒有結束條件,因此會無限地執行下去。在JavaScript入門教程學習中,大家在寫for語句的時候要特別地注意一下。