上一章JavaScript教程请查看:JS数组排序
在本教程中,你将学习如何在JavaScript中使用循环语句来重复一系列操作。
JavaScript中不同类型的循环循环用于一次又一次地执行相同的代码块,只要满足一定的条件。循环背后的基本思想是自动化程序中的重复任务,以节省时间和精力,JavaScript现在支持五种不同类型的循环:
- while循环遍历一个代码块,只要指定的条件的值为true。
- do… while——循环遍历一段代码; 然后对条件进行评估。如果条件为真,则只要指定的条件为真,就会重复该语句。
- for循环遍历一个代码块,直到计数器达到指定的数字。
- for… in循环遍历对象的属性。
- for… of对于迭代对象(如数组、字符串等)的循环。
while循环这是JavaScript提供的最简单的循环语句。
只要指定条件的值为true, while循环就会遍历代码块,一旦条件失败,循环就会停止。while循环的一般语法是:
while(condition) {
// 执行代码
}
下面的示例定义了一个循环,只要变量i小于或等于5,这个循环就会继续运行。每次循环运行时,变量i将增加1
var i = 1;
while(i <
= 5) {
document.write("<
p>number is " + i + "<
/p>");
i++;
}
注意: 确保循环中指定的条件最终为false,否则,循环将永远不会停止迭代,这就是所谓的无限循环。一个常见的错误是忘记增加计数器变量(在我们的例子中是变量i)。
do… while循环do-while循环是while循环的一个变体,它在每次循环迭代结束时计算条件。在do-while循环中,代码块执行一次,然后对条件求值,如果条件为真,则只要对指定条件求值为真,就重复语句。do-while循环的一般语法是:
do {
// 执行代码
}
while(condition);
下面示例中的JavaScript代码定义了一个从i=1开始的循环,然后它将打印输出并将变量i的值增加1,在条件被求值之后,只要变量i小于或等于5,循环就会继续运行。
var i = 1;
do {
document.write("<
p>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;
increment) {
// 执行代码
}
for循环语句的参数有以下含义:
- initialization初始化——它用于初始化计数器变量,并在循环体的第一次执行之前无条件地执行一次。
- condition条件——它在每次迭代的开始进行评估。如果计算结果为true,则执行循环语句。如果计算结果为false,则循环执行结束。
- increment增量——每次循环运行时,它都会用一个新值更新循环计数器。
for(var i=1;
i<
=5;
i++) {
document.write("<
p>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循环是一种特殊类型的循环,它遍历对象的属性或数组的元素。forin循环的一般语法是:
for(variable in object) {
// 执行代码
}
它包含当前属性的名称或当前数组元素的索引。
下面的示例将向你展示如何循环遍历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循环。
ES6的for… of循环ES6引入了一个新的for-of循环,它允许我们很容易地遍历数组或其他可迭代对象(例如字符串),此外,循环内的代码针对iterable对象的每个元素执行。
下面的示例将向你展示如何使用此循环遍历数组和字符串。
// 遍历数组
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特性一章。
【JS循环语句 – JavaScript教程】注意:for… of循环不和对象一起用,因为他们是不可迭代的,如果希望遍历对象的属性,可以使用for-in循环。
推荐阅读
- JS函数function – JavaScript教程
- JS数组排序 – JavaScript教程
- JS数组Array及其用法 – JavaScript教程
- JS switch…case分支语句 – JavaScript教程
- JS if…else条件语句 – JavaScript教程
- JS数字类型及其操作 – JavaScript教程
- JS字符串及其操作 – JavaScript教程
- JS事件和事件处理器 – JavaScript教程
- JS操作符 – JavaScript教程