JavaScript 中的无限循环

有各种可用的循环服务于特定目的并在需求匹配时使用。我们可以使用它们中的任何一个来让它运行无限次。

在今天的文章中,我们将了解不同类型的循环以及什么是 JavaScript 中的无限循环。

在 JavaScript 中使用 while 循环的无限循环

只要测试条件为 truewhile 语句就会生成一个执行特定语句的循环。条件总是在它里面的语句被执行之前被评估。

语法:

while (condition)
  statement

为了理解 while 循环,让我们看看下面的例子。

例子:

let i = 0
while(i < 3) {
  console.log(i);
  i += 1;
}

在上面的例子中,i < 3 是条件。这是一个表达式,在循环的每一步之前都会被评估。

如果此条件的计算结果为 true,则执行其中写入的语句。因此,直到 i 的值小于 3,它才会打印 i 的当前值。

一旦条件评估为 falsewhile 循环执行停止并继续执行 while 循环之后的语句。

console.log(i); i += 1 是 statement,它是一个可选语句,只要条件为 true 时执行。在我们的示例中,console.log 是在 i 的值小于 3 之前执行的语句。

当上述代码在任何浏览器中运行时,你将获得以下输出。

输出:

0
1
2

要使此循环无限运行,请将条件指定为 true,它将无限运行。这里唯一的缺点是 JavaScript 是单线程的。

所以它会阻塞当前线程,你的窗口会冻结。

在 JavaScript 中使用 for 循环的无限循环

for 语句是 JavaScript 提供的内置循环。它创建了一个循环,该循环采用三个可选表达式,括在括号中。

这些表达式用分号隔开,后面是需要在循环中执行的块语句。

语法:

for ([initialization]; [condition]; [final-expression])
  statement

为了理解 for 循环,让我们看看下面的例子。

例子:

for(let i = 0; i < 3; i++) {
  console.log(i)
}
// for(;;) {
//   console.log("hello world!")
// }

在上面的例子中,let i = 0 是 for 循环的初始化。它是在循环开始之前计算一次的表达式或变量声明。

该表达式可以使用可选的关键字 var 或 let 声明新变量。用 var 关键字声明的变量不是循环的局部变量;它们与 for 循环在同一范围内。

我们的变量 i 是用声明的本地变量 let 声明的。

i < 3 是 for 循环的条件。它是在循环的每次迭代之前评估的表达式。

如果该表达式为 true,则执行该语句。在我们的示例中,直到 i 的值小于 3,它才会打印 i 的当前值。

此调节测试是可选参数。如果省略,则条件始终计算为 true

如果表达式的计算结果为 false,则执行跳转到 for 构造之后的第一个表达式。

i++ 是 final-expression。它是在每次循环迭代结束时计算的表达式。

这发生在对条件的下一次评估之前。它每次都更新 i 的值。

console.log(i) 是语句。它是在条件评估为 true 时执行的语句。

在 for() 循环 的文档中查找更多信息。

当上述代码在任何浏览器中运行时,你将获得以下输出。

输出:

0
1
2

要使这个循环无限运行,不要指定任何条件(如上面注释代码所示),它将无限运行。这里唯一的缺点是 JavaScript 是单线程的。

所以它会阻塞当前线程,你的窗口会冻结。

在 JavaScript 中使用 setInterval 的无限循环

JavaScript 默认提供了 setInterval() 方法。这个方法暴露在 Windows 和 Worker 接口中,重复调用一个函数或执行一段代码,每次调用之间有固定的时间延迟。

setInterval() 方法返回唯一标识间隔的间隔 ID,以便你以后可以通过调用 clearInterval() 将其删除。

语法:

const intervalID = setInterval(code, [delay]);

为了理解 setInterval,让我们看看下面的例子。

例子:

setInterval(() => {
  console.log('Hello world')
}, 1);

console.log('Hello world') 是上面例子中的代码。一种可选语法,允许你包含字符串而不是函数,每延迟毫秒编译和执行一次。

1 是 delay,可选参数,指定时间;以毫秒为单位,计时器应该在指定函数或代码的执行之间延迟。如果未指定,则默认值为 0。

此函数返回 interval ID,一个非零数值,用于标识由 setInterval() 调用创建的计时器。要取消间隔,我们可以将此值传递给 clearInterval()

在 setInterval() 的文档中查找更多信息。

这个函数的优点是它不会阻塞 JavaScript 的执行,它会无限次返回,直到间隔被清除。要清除间隔,请调用 clearInterval() 函数。

输出:

'Hello world'
'Hello world'
'Hello world'
'Hello world'
'Hello world'
'Hello world'
'Hello world'
...