- JS全書:JavaScript Web前端開發指南
- 高鵬
- 1016字
- 2020-09-18 10:29:18
3.7 循環語句
循環語句可以讓一部分代碼反復執行,是一種常見的控制語句。
3.7.1 for
for語句是編程中常用的循環語句。
語法:
for ([initialization]; [condition]; [final-expression]){ statement }
for循環包含3部分——初始化、測試條件、表達式,可以在initialization中初始化變量,for循環會在每次迭代之前,先測試條件condition的值,如果值為true,則執行循環體內的代碼,并執行final-expression,如果返回值為false,則不執行循環內的代碼,也不會執行finalexpression。
示例代碼:

3.7.2 while
語法:
while (condition) { statement }
while語句和for語句類似,同樣是先測試條件condition(condition為必需參數),如果值為true,則執行循環內的代碼。
示例代碼:

· do…while
do…while和while類似,不同之處在于,不同于while的先測試再執行,do…while語句會先執行循環體內的代碼,再測試條件,如果測試條件為true,則繼續執行循環體內的代碼。
語法:
do{ statement } while( condition )
示例代碼:

乍看,上面的代碼與while語句的輸出結果相同,觀察下面的示例能讓我們更好地理解do…while和while的區別。

上述代碼中,do…while和while的測試條件均為false,但do…while語句中循環體內的代碼執行了一次,while語句中循環體內的代碼沒有執行,這也意味著do…while語句中循環體內的代碼至少會執行一次。
3.7.3 for…in
for…in語句用來遍歷對象的可枚舉的屬性,關于對象屬性是否可枚舉,會在后續章節中講到,這里不必理會。
語法:
for (prop in object ){ statement }
示例代碼:

不要對數組使用for…in語句,因為在遍歷數組時,prop表示的是索引,但這個索引是一個字符串,示例如下。

這就導致我們在用索引做運算時,可能出現意外的問題(盡管可以使用類型轉換來處理,但不推薦)。
再看下面的示例。

上述代碼中,for…in語句將數組原型上的方法也進行了輸出,這與我們期望的結果不同。假如代碼中包含了其他對數組原型進行了修改的代碼,for…in語句在遍歷數組時就可能出現問題,所以,千萬不要對數組使用for…in語句。
3.7.4 for…of
for…of語句在可迭代對象(包括Array、Map、Set、String、arguments、NodeList對象等)上創建一個迭代循環,對每個不同屬性的屬性值調用一個自定義的有執行語句的迭代掛鉤。
語法:
for (variable of iterable) { statements }
示例代碼:

3.7.5 break和continue語句
break和continue用于控制循環,在上一節的條件語句中,我們接觸了break,break用于跳出當前循環,continue則是跳出當次循環,上述的循環語句都支持break和continue。
對比以下代碼可以看出兩者的區別。

上述代碼中,在i等于3時,break語句跳出for循環,不再繼續往下執行,因此程序只輸出0、1、2;而continue語句只是跳出當次循環,因此程序不輸出3,循環繼續,最終輸出0、1、2、4。
練習
- 使用不同的循環語句輸出0~10。
- 使用不同的循環語句輸出0~10,并使用break。
- 使用不同的循環語句輸出0~10,并使用continue。
- JavaScript Unlocked
- Visual C++數字圖像模式識別技術詳解
- Nginx實戰:基于Lua語言的配置、開發與架構詳解
- Visual Basic程序設計
- LabVIEW虛擬儀器入門與測控應用100例
- Scala編程(第5版)
- Go語言開發實戰(慕課版)
- Java Web開發實例大全(基礎卷) (軟件工程師開發大系)
- Java并發編程:核心方法與框架
- 計算機應用基礎(第二版)
- 黑莓(BlackBerry)開發從入門到精通
- 面向對象程序設計及C++(第3版)
- Blender 3D Cookbook
- 一步一步學Spring Boot:微服務項目實戰(第2版)
- HTML5 Canvas核心技術:圖形、動畫與游戲開發