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