if語句惟一的不足是沒法完成重複性的操做。在if語句裏,包含在花括號裏的代碼塊只能執行一次。若是須要屢次執行同一個代碼塊,就必須使用循環語句。數組
while循環與if語句很是類似,它們的語法幾乎徹底同樣:測試
while (condition) { statements; }
while循環與if語句惟一的區別是:只要給定條件的求值結果是true,包含在花括號裏的代碼就將反覆地執行下去。下面是一個while循環的例子:code
var count = 1; while (count < 11) { alert (count); count++; }
上面這段代碼中,首先,建立數值變量count並賦值爲1,而後,以count<11————意思是「只要變量count的值小於11,就重複執行這個循環」————爲條件建立一個while循環。在while循環的內部,用「++」操做符對變量count的值執行加1操做,而這以操做將重複執行10次。rem
相似於if語句的狀況,while循環的花括號部分所包含的語句有可能不被執行,由於對循環控制條件的求值發生在每次循環開始以前,因此若是循環控制條件的首次求值結果是false,那些代碼將以此也不會執行。it
有時,咱們但願那些包含在循環語句內部的代碼至少執行以此。這時,do循環是咱們的最佳選擇。下面是do循環的語法:io
do { statements; } while (condition);
與剛纔的while循環有個顯而易見的區別:對循環控制條件的求值發生在每次循環結束以後。所以,即便循環控制條件的首次求值結果是false,包含在花括號裏的語句也至少會被執行一次。for循環
var count = 1; do { alert (count); count++; } while (count < 11);
這段代碼的執行結果與while循環徹底同樣:alert消息將閃現10次;在循環結束後,變量count的值將是11.test
看下面這個變體:變量
var count = 1; do { alert (count); count++; } while (count < 1)
在上面這個do循環裏,循環控制條件的求值結果永遠不爲true:變量count的初始值是1,因此它在這裏永遠不會小於1。但是,由於do循環的循環控制條件出如今花括號部分以後,因此包含在這個do循環內部的代碼仍是執行了一次。也就是說,仍將看到一條alert消息。這些語句執行完畢後,變量count的值將是2,儘管循環控制條件的求值結果是false。循環
用for循環來重複執行一些代碼也很方便,它相似於while循環。事實上,for循環只是while循環的一種變體。若是仔細觀察while循環的例子,就會發現它們均可以改寫爲以下所示的樣子:
initialize; while (condition) { statements; increment; }
而for循環不過是進一步改寫爲以下所示的緊湊形式而已:
for (initial condition; test condition; alter conidtion) { statements; }
用for循環來重複執行一些代碼的好處是循環控制結構更加清晰。與循環有關的全部內容都包含在for語句的圓括號部分。
能夠將do...while循環裏的例子改寫爲以下所示的for循環:
for (var count = 1; count < 11; count++ ) { alert (count); }
與循環有關的全部內容都包含在for語句的圓括號裏。當把一些代碼放在花括號中間的時候,清楚地知道哪些代碼將會被執行10次。
for循環最多見的用途之一是對某個數組裏的全體元素進行遍歷處理。這每每須要用到數組的array.length屬性,這個屬性能夠告訴咱們在給定數組裏的元素的個數。特別要注意的是數組下標是從0而不是1開始。
下面這個例子中,數組有4個元素。count變量對於數組中每一個元素都是從0開始按1遞增。數到4時,測試條件失敗,循環終止,3是從數組中檢索到的最後一個下標。
var beatles = Array("John","Paul","George","Ringo"); for (var count = 0; count < beatles.length; count++ ) { alert(beatles[count]); }
運行這段代碼,將看到4條alert消息,它們分別對應着Beatles樂隊的四位成員。