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