JavaScript 循环
在本教程中,您将学习如何在 JavaScript 中使用循环重复一系列操作。
JavaScript 中不同类型的循环
只要满足某个条件,循环就会一次又一次地执行相同的代码块。 循环背后的基本思想是自动执行程序中的重复性任务,以节省时间和精力。 JavaScript 现在支持五种不同类型的循环:
- while — 只要指定条件的计算结果为真,就循环一段代码。
- do…while — 循环一次代码块; 然后评估条件。 如果条件为真,只要指定的条件为真,语句就会重复。
- for — 循环遍历一段代码,直到计数器达到指定的数字。
- for…in — 循环遍历对象的属性。
- for…of — 循环遍历数组、字符串等可迭代对象。
在接下来的部分中,我们将详细讨论这些循环语句。
while 循环
这是 JavaScript 提供的最简单的循环语句。
只要指定条件的计算结果为真,while
循环就会遍历一段代码。 一旦条件失败,循环就会停止。 while 循环的通用语法是:
// 要执行的代码
}
以下示例定义了一个循环,只要变量 i
小于或等于 5,该循环就会继续运行。变量 i
每次循环都会增加 1 运行:
var i = 1;
while(i <= 5) {
document.write("<p>The number is " + i + "</p>");
i++;
}
注意: 确保循环中指定的条件最终变为 false。 否则,循环将永远不会停止迭代,这称为无限循环。 一个常见的错误是忘记增加计数器变量(在我们的例子中是变量 i
)。
do...while 循环
do-while
循环是 while
循环的变体,它在每次循环迭代结束时评估条件。 使用 do-while
循环,代码块执行一次,然后评估条件,如果条件为真,只要指定的条件评估为真,语句就会重复。 do-while 循环的通用语法是:
// 要执行的代码
}
while(condition);
以下示例中的 JavaScript 代码定义了一个以 i=1
开头的循环。 然后它将打印输出并将变量 i
的值增加 1。在评估条件之后,只要变量 i
循环将继续运行 小于或等于 5。
var i = 1;
do {
document.write("<p>The number is " + i + "</p>");
i++;
}
while(i <= 5);
while 和 do...while 循环之间的区别
while
循环在一个重要方面不同于 do-while
循环 — 使用 while
循环,要评估的条件在每次循环迭代开始时进行测试,因此如果条件表达式的计算结果为 false,则永远不会执行循环。
另一方面,对于 do-while
循环,即使条件表达式的计算结果为 false,循环也将始终执行一次,因为与 while
循环不同,条件是在循环迭代结束而不是开始时计算的。
for 循环
只要满足某个条件,for
循环就会重复一段代码。 它通常用于执行一段代码一定次数。 它的语法是:
// 要执行的代码
}
for
循环语句的参数含义如下:
- initialization — 它用于初始化计数器变量,并在第一次执行循环体之前无条件地评估一次。
- condition — 它在每次迭代开始时进行评估。 如果结果为
true
,则执行循环语句。 如果它的计算结果为false
,则循环的执行结束。 - increment — 每次循环运行时,它都会用新值更新循环计数器。
以下示例定义了一个以 i=1
开头的循环。 循环将一直持续到变量 i
的值小于或等于 5。每次循环运行时,变量 i
都会增加 1:
for(var i=1; i<=5; i++) {
document.write("<p>The number is " + i + "</p>");
}
for
循环对于遍历数组特别有用。 以下示例将向您展示如何打印 JavaScript 数组 的每个项目或元素。
// 包含一些元素的数组
var fruits = ["Apple", "Banana", "Mango", "Orange", "Papaya"];
// 循环遍历数组中的所有元素
for(var i=0; i<fruits.length; i++) {
document.write("<p>" + fruits[i] + "</p>");
}
for...in 循环
for-in
循环是一种特殊类型的循环,它遍历 object 的属性或数组的元素 . for-in
循环的通用语法是:
// 要执行的代码
}
循环计数器,即 for-in
循环中的 variable 是一个字符串,而不是一个数字。 它包含当前属性的名称或当前数组元素的索引。
以下示例将向您展示如何遍历 JavaScript 对象的所有属性。
// 具有某些属性的对象
var person = {"name": "Clark", "surname": "Kent", "age": "36"};
// 循环遍历对象中的所有属性
for(var prop in person) {
document.write("<p>" + prop + " = " + person[prop] + "</p>");
}
同样,您可以循环遍历数组的元素,如下所示:
// 包含一些元素的数组
var fruits = ["Apple", "Banana", "Mango", "Orange", "Papaya"];
// 循环遍历数组中的所有元素
for(var i in fruits) {
document.write("<p>" + fruits[i] + "</p>");
}
注意: for-in
循环尽量不要用于迭代索引顺序很重要的数组。 您最好使用带有数字索引的 for
循环。
for...of 循环 ES6
ES6 引入了一个新的 for-of
循环,它允许我们非常轻松地迭代 数组 或其他可迭代对象(例如 字符串)。 此外,循环内的代码针对可迭代对象的每个元素执行。
以下示例将向您展示如何使用此循环遍历数组和字符串。
// 遍历数组
let letters = ["a", "b", "c", "d", "e", "f"];
for(let letter of letters) {
console.log(letter); // a,b,c,d,e,f
}
// 遍历字符串
let greet = "Hello World!";
for(let character of greet) {
console.log(character); // H,e,l,l,o, ,W,o,r,l,d,!
}
要了解其他 ES6 功能,请查看 JavaScript ES6 功能 章节。
注意: for...of
循环不适用于对象,因为它们不可迭代。 如果要遍历对象的属性,可以使用 for-in
循环。