开发学院

您的位置:首页>教程>正文

教程正文

ES6 循环

ES6 循环

  如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,循环是实现相同的理想方法。循环表示重复的一组指令,在循环上下文中,重复被称为迭代。

  循环有定量循环和不定量循环两种.

定量循环

  迭代次数是固定的循环被称为定量循环,定量循环包含:for循环,for...in循环,for...of循环:

for循环

  for 循环是您在希望创建循环时常会用到的工具。

  下面是 for 循环的语法:

for (语句 1; 语句 2; 语句 3)
{
  被执行的代码块
}

  语句 1 在循环(代码块)开始前执行

  语句 2 定义运行循环(代码块)的条件

  语句 3 在循环(代码块)已被执行之后执行

实例

for (var i=0; i<5; i++)
{
  console.log("The number is " + i);
}

  从上面的代码中,可以看到:

  语句 1在循环开始之前设置变量 (var i=0)。

  语句 2定义循环运行的条件(i 必须小于 5)。

  语句 3在每次代码块已被执行后增加一个值 (i++)。

  以上代码会输出:

The number is 0
The number is 1
The number is 2
The number is 3
The number is 4

for...in循环

   for...in循环一般用于通过对象的属性循环。for...in更适合遍历对象,不要使用for in遍历数组。for in遍历的是数组的索引(键名),下面是for...in的语法:

for (variablename in object) {  
   statement or block to execute  
}

  在每次迭代中,来自对象的一个属性被分配给变量名,这个循环将继续,直到对象的所有属性都用尽。

例子

var obj = {a:1, b:2, c:3};  
for (var prop in obj) { 
   console.log(obj[prop]); 
}

  以上代码会输出:

1 
2 
3

for..of循环

  for...of循环用于遍历数据,比如数组或者表单。for...of是目前遍历数组最简洁和直接的语法,它避免了for-in的所有缺陷,支持break,continue和return。

下面是“for…of”循环的语法。

for (variablename of object) {  
   statement or block to execute  
}

例子

for (let val of[12 , 13 , 123]) {   
   console.log(val) 
}

  以上代码会输出:

12 
13 
123

不定量循环

 迭代次数不固定的循环被称为不定量循环,定量循环包含:while循环,do...while循环:

while 循环

  While 循环会在指定条件为真时循环执行代码块。

语法

while (条件)
  {
  需要执行的代码
  }

实例

  本例中的循环将继续运行,只要变量 i 小于 5:

while (i<5)
{
  console.log("The number is " + i);
  i++;
 }

  提示:如果您忘记增加条件中所用变量的值,该循环永远不会结束。该可能导致浏览器崩溃。

do/while 循环

  do/while 循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。

语法

do
{
  需要执行的代码
}
while (条件);

实例

  下面的例子使用 do/while 循环。该循环至少会执行一次,即使条件是 false,隐藏代码块会在条件被测试前执行:

do
{
  console.log("The number is " + i);
  i++;
}
while (i<5);

  别忘记增加条件中所用变量的值,否则循环永远不会结束!

循环控制语句

  循环控制语句包含:break语句和continue语句.break 语句用于跳出循环。continue 用于跳过循环中的一个迭代。

Break 语句

  我们已经在本教程稍早的章节中见到过 break 语句。它用于跳出 switch() 语句。

  break 语句可用于跳出循环。

  break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话):

实例

for (i=0;i<10;i++)
{
  if (i==3)
    {break;}
  console.log("The number is ");
 }

  由于这个 if 语句只有一行代码,所以可以省略花括号:

for (i=0;i<10;i++)
{  if (i==3) break;
  console.log("The number is " + i);
}

Continue 语句

  continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。

实例

for (i=0;i<=10;i++)
{
 if (i==3) continue;
  console.log("The number is ");
}

  该例跳过了值 3:

使用标签来控制流

  标签是一个标识符,后面跟着应用于语句或代码块的冒号(:)。标签可以与break一起使用,并可更精确地控制流。

  continue或break语句及其标签名称之间不允许换行。此外,标签名称和关联循环之间不应有任何其他语句.

  如需标记语句,请在语句之前加上冒号:

label:
语句

语法

  break labelname;
  continue labelname;

break实例

outerloop: // This is the label name  
for (var i = 0; i < 5; i++) {  
   console.log("Outerloop: " + i);  
   innerloop:  
   
   for (var j = 0; j<5; j++) {  
      if (j>3 ) break; 
      
      // Quit the innermost loop  
      if (i == 2) break innerloop; 
      
      // Do the same thing  
      if (i == 4) break outerloop; // Quit the outer loop  
      console.log("Innerloop: " + j);  
   }  
}

  上述代码产生如下输出:

Outerloop: 0 
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Innerloop: 3 
Outerloop: 1 
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Innerloop: 3 
Outerloop: 2 
Outerloop: 3 
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Innerloop: 3 
Outerloop: 4

continue实例

outerloop: // This is the label name  
for (var i = 0; i < 3; i++) {  
   console.log("Outerloop: " + i);  
   
   for (var j = 0; j < 5; j++) {  
      if (j == 3){  
         continue outerloop;  
      }  
      console.log("Innerloop: " + j );  
   }  
}

  上述代码产生如下输出:

Outerloop: 0 
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Outerloop: 1 
Innerloop: 0 
Innerloop: 1 
Innerloop: 2 
Outerloop: 2 
Innerloop: 0 
Innerloop: 1 
Innerloop: 2