JavaScript 中提供了这些循环语句:
for 语句
for (var i = 0; i < selectObject.options.length; i++) {
if (selectObject.options[i].selected) {
numberSelected++;
}
}
do...while 语句
var i = 0;
do {
i += 1;
console.log(i);
} while (i < 5);
while 语句
while (n < 3) {
n++;
x += n;
}
label 语句
var num = 0;
outPoint: for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break outPoint; // 在 i = 5,j = 5 时,跳出所有循环,
// 返回到整个 outPoint 下方,继续执行
}
num++;
}
}
alert(num); // 输出 55
break 语句
使用 break 语句来终止循环,switch,或者是链接到 label 语句。
- 当你使用不带
label的break时,它会立即终止当前所在的while,do-while,for,或者switch并把控制权交回这些结构后面的语句。 - 当你使用带
label的break时,它会终止指定的带标记(label)的语句。
for (i = 0; i < a.length; i++) {
if (a[i] == theValue) {
break;
}
}
continue 语句
continue 语句可以用来继续执行(跳过代码块的剩余部分并进入下一循环)一个 while、do-while、for,或者 label 语句。
while (i < 5) {
i++;
if (i == 3) {
continue;
}
n += i;
console.log(n);
}
for...in 语句
for...in 语句循环一个指定的变量来循环一个对象 所有(包括继承而来的) 可枚举 的 字符串键 属性(不包含 Symbol 键属性)。JavaScript 会为每一个不同的属性执行指定的语句。
const object = { a: 1, b: 2, c: 3 };
for (const property in object) {
console.log(`${property}: ${object[property]}`);
}
// Expected output:
// "a: 1"
// "b: 2"
// "c: 3"
许多 JavaScript 风格指南和代码检查工具建议避免使用 for...in 循环,因为它会遍历整个原型链,这很少是我们想要的,并且可能会与更常用的 for...of 循环混淆。for...in 循环最常用于调试目的,它是一种简单的方式来检查对象的属性(通过向控制台输出或其他方式)。在对象被用作临时键值对的情况下,for...in 循环可以检查这些键中是否存在持有特定值的键。
参见枚举对象的属性。
for...of 语句
for...of 语句在可迭代对象(包括 Array、Map、Set、arguments 等等)上创建了一个循环,对值的每一个独特属性调用一次迭代。
let arr = [3, 5, 7];
arr.foo = "hello";
for (let i in arr) {
console.log(i); // 输出 "0", "1", "2", "foo"
}
for (let i of arr) {
console.log(i); // 输出 "3", "5", "7"
}
// 注意 for...of 的输出没有出现 "hello"
参见对象的迭代协议。
参考
循环与迭代
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Loops_and_iteration