在计算中,几乎所有的编程语言都支持循环的概念。在计算中,循环是一组指令,允许程序员以快速和有效的方式重复做某事。循环在一个代码块中迭代/重复执行,直到满足某个条件。
所有高级编程语言都提供几种不同类型的循环。这些循环的语法可能不同,但它们被用来执行相同的任务。这些循环是可以互换的,但有些循环是专门为某些特定条件下使用的。
大多数编程语言中最流行的循环是for 循环和while 循环;这里我们将讨论它们以及它们在JavaScript中的扩展。
如何使用JavaScript中的for循环
JavaScript中最简单和最常用的循环是for 循环;当程序员知道循环要运行的明确次数时,for 循环比其他循环更受欢迎。

让我们来看看for 循环的语法,以了解为什么。
for ( initialization ; condition ; variable modification ) {
// code statements to be executed
}
for 循环需要三个参数,初始化、条件和变量修改。
- 第一个参数,即初始化 ,在执行循环之前只运行一次;它初始化一个变量,用于循环的条件中。
- 第二个参数,即条件 ,在每次迭代前都会被评估;当这个条件被满足时,循环就会终止。
- 第三个也是最后一个参数变量修改是用来在循环的每个迭代之后修改条件中使用的变量的值。
for 循环的参数指定了它要运行的明确的迭代次数。它们指定了循环的起始点(初始化)和结束点(条件)。尽管所有的参数都是可选的(即使你不指定条件,for 循环也会运行),但不建议将条件参数留空,因为它将创建一个无限循环,可能会使你的浏览器崩溃。
现在让我们举个例子来更好地理解for 循环。
注意: 本文中的例子是用浏览器的控制台来演示的。
在这个例子中,我们将使用for 循环从10倒数到1。
for (let index = 10; index >= 1; index--) {
console.log(index);
}

在上面的例子中。
- 索引 被初始化为10
- 然后检查条件,由于索引 大于或等于1条件为真,循环被执行,索引的值被打印到控制台。
- 在第一次迭代之后,索引 变量被递减了1。运算符**"-** "将索引的值减少1。
- 然后再次检查条件;如果条件仍然为真,则再次执行循环。
只要循环的条件仍然为真,这个过程就会不断重复。当索引 的值变为0时,大于或等于1的条件就不再是真的,循环就终止了。
我们可以对for 循环语句的最后一个参数中的变量进行任何操作。
for (let index = 2; index < 500; index*=2) {
console.log(index);
}

如何在JavaScript中使用while循环
While 循环只接受一个参数,即循环的条件。

它们主要用于代码必须运行不知道多少次,直到条件得到满足。
while (condition) {
// Statements
}
让我们看一个例子,我们将在循环内使用Math.random() 方法生成一个随机数;循环将一直运行,直到Math.random() 方法产生一个奇数。
runLoopAgain = true;
while (runLoopAgain) {
num = Math.random().toFixed(1)*10;
if (num % 2 != 0) {
runLoopAgain = false;
}
console.log(num);
}

在上面的例子中,我们首先声明了一个名为runLoopAgain 的布尔值,并给它分配了一个值,即true。while循环在执行循环之前评估条件;因为变量runLoopAgain 是循环的条件,并且是真,所以while循环被执行。在while 循环的主体中,我们使用了Math 对象的随机方法和**.toFixed方法来得到一个0到9的随机数。然后我们使用了一个条件语句来检查这个数字是否能被2整除(以检查它是偶数还是奇数)。如果数字是奇数,那么runLoopAgain** 变量将变为假数,循环将终止,否则该变量/条件将保持为真,循环将继续运行。
我们在上面的例子中使用for 循环执行的任务也可以用while 循环执行。
let i = 10;
while (i >= 1) {
console.log(i);
i--;
}

let i = 2;
while (i < 500) {
console.log(i);
i*=2;
}

如何在While循环中使用break语句
break语句可以在循环的主体内使用,以终止循环。让我们看一个例子。
let i = 2;
while (i < 20) {
if (i % 5 == 0) {
break;
}
console.log(i);
i+=2;
}

在这个例子中,我使用了一个while 循环来打印出每个小于21的偶数,但是我只得到了小于9的偶数,这是为什么呢?这是因为我使用了break语句,如果偶数是5的倍数,就会终止这个循环。我们可以使用break语句,在循环体内部为while 循环的终止设置不同的条件。
如何在while循环中使用continue语句
continue语句用于跳过一个迭代,进入while 循环的下一个迭代。例如,如果我们想跳过5的倍数的数字,而不是在上面的例子中直接终止循环,那么我们将使用continue语句。
let i = 2;
while (i < 21) {
if (i % 5 == 0) {
i+=2;
continue;
}
console.log(i);
i+=2;
}

正如你所看到的,5、10 和20被遗漏了,因为它们是5的倍数,同时也是偶数。
如何使用JavaScript中的do while循环
do while循环是建立在while循环之上的,这意味着它是while循环的扩展。

在while循环中,条件是在执行循环主体之前被评估的,而do while循环则相反,是在执行循环主体之后检查条件。
runLoopAgain = true;
while (runLoopAgain) {
num = Math.random().toFixed(1)*10;
if (num % 2 != 0) {
runLoopAgain = false;
}
console.log(num);
}
在上面给出的这个例子中,我们必须在循环主体之前声明并初始化runLoopAgain 变量,因为while 循环在迭代之前评估了条件。
而do while 循环是在每次迭代后检查条件,所以如果我们确定我们想至少运行一次循环中的代码,那么我们就使用do while 循环。在这个例子中,我们确定在检查随机数是偶数还是奇数之前,我们至少要生成一个随机数,所以更好的写法是。
do {
num = Math.random().toFixed(1)*10;
console.log(num);
} while (num % 2 == 0);

如何使用JavaScript中的for in、for of和foreach循环
JavaScript中的for in、for of和foreach 循环是for循环的一个扩展。在这里,我们将讨论所有这些循环;for in循环是用来迭代一个对象的属性的。for in 循环的每次迭代都会返回一个键,可以用来访问该键的值。
var employee = {firstName:"Mary", lastName:"Jane", age:33, id:092, department: "Education"};
for (let p in employee)
{
console.log(p);
console.log(employee[p]);
}

如果for in循环应用于一个数组,它返回每个元素的索引。如果我们想获得每个索引的值,那么我们可以使用for的 循环。
var num = [5, 6, 7, 8, 9];
for (let d of num)
{
console.log(d);
}

for的循环用于循环可迭代的对象,如数组、地图、字符串等。如果我们在一个字符串上使用for的 循环,那么它在每次迭代中都会返回字符串的一个字符。
var greet = "Welcome to Linux Hint!";
for (let c of greet)
{
console.log(c);
}

.foreach() 循环用于对数组中的每个元素执行特定的操作;它循环数组中的元素,对每个元素调用一次函数。
.foreach() 循环需要一个回调函数作为参数,它还需要三个参数,其中两个是可选的;唯一需要的参数是当前元素的值。元素的索引和整个数组本身也可以作为回调函数的参数。现在我们来看一个例子,我们使用**.foreach()** 循环将数组中的每个元素乘以2并打印到控制台。
var numbers= [99, 85, 788, 2, 255, 598];
numbers.forEach(function (value)
{
console.log(value +" * 2 = " + value*2);
})

结论
循环是控制流语句,用于减少代码的低效性和编写更简洁的代码。它们是任何主要的高级编程语言的最基本部分之一。在这篇文章中,我们学习了JavaScript中的所有循环;我们使用JavaScript语法来学习for 和while 循环,以及它们的扩展。此外,我们还讨论了while 循环的break和continue语句。