官术网_书友最值得收藏!

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。
主站蜘蛛池模板: 曲阜市| 巢湖市| 河源市| 琼海市| 龙井市| 疏勒县| 上饶市| 安多县| 阜城县| 常山县| 广汉市| 临夏市| 遵化市| 汤原县| 九江市| 漳平市| 夏津县| 灵宝市| 三门峡市| 阳江市| 丰城市| 平顶山市| 宜兴市| 肥城市| 习水县| 开鲁县| 贡山| 乌兰浩特市| 浏阳市| 龙井市| 图木舒克市| 自贡市| 寻乌县| 天峻县| 聊城市| 延安市| 固镇县| 泾川县| 清丰县| 龙海市| 尼勒克县|