在JavaScript中,(;;){…}做什么?

在JavaScript中,(;;){…}做什么?,javascript,syntax,for-loop,Javascript,Syntax,For Loop,我在一些JavaScript代码中看到了这一点,但我不明白它的作用 for(;;){ //other code } 我习惯于JavaScript中的for(I=0;I,for(;;){…}只会创建一个无限循环,这几乎与: while (true) { // ... } 或 总是true它会创建一个无限期运行的循环。这与您经常看到的语法相同,分号之间没有代码 for循环的语法包括初始值设定项,后跟分号,后跟继续循环的条件,后跟分号,后跟循环每次迭代后运行的代码 由于没有初始值设

我在一些JavaScript代码中看到了这一点,但我不明白它的作用

for(;;){

  //other code

}
我习惯于JavaScript中的
for(I=0;I,
for(;;){…}
只会创建一个无限循环,这几乎与:

while (true) {
    // ...
}


总是
true

它会创建一个无限期运行的循环。这与您经常看到的语法相同,分号之间没有代码

for
循环的语法包括初始值设定项,后跟分号,后跟继续循环的条件,后跟分号,后跟循环每次迭代后运行的代码


由于没有初始值设定项,没有计算为false的条件,也没有循环后代码,因此循环将永远运行。

这是一个无限循环。
循环的
有3个部分,由
分隔;
是初始化部分,通常在初始化部分声明和定义计数器的启动条件,中间的条件是计算结果为
true
false
的数据,以及增量部分

所有这三个部分都是可选的。您可以包含任何部分,也可以不包含任何部分。循环将继续循环,直到条件为
false
。如果从未满足该条件(因为它被忽略),则将永远循环


您可能会看到它被预先添加到JSON数据的位置,如所述。

for(;;)
是完全相同的语法。你可以省略分号之间的部分,甚至所有分号。如果你省略了条件,它被假定为
true
,因此它会导致一个无限循环。当然,你仍然可以退出
break
return
或诸如此类的东西,因此它不是无用的。

啊,好的。那么这是for的“可接受”用法吗?或者while(true)是一种更清晰的语法吗?
while(true)
可能会更容易被其他人注意到,并且可能会更好地显示您创建无止境循环的意义。不过,我不确定是否有任何性能方面的考虑因素(除了它将永远持续到结束这一事实之外)还可以做一些类似的事情:
var tester=true;while(tester){/*…*/tester=false;}
,当您将tester设置为false(或者您可以使用。使用Chrome对这两个循环进行了1000000次尝试,两者的差异很小,有利于(;;)的
速度提高约1%。我使用了我的简单bench函数:for和while循环语法继承自C。很长一段时间以来,C没有内置布尔值,因此for(;;)的替代方法是while(1).两者都是可以接受的C语言习惯用法,但并非所有C语言商店都可以接受。When while(true)是可用的,基于可读性和概念清晰性,这似乎更可取。担心性能是过早优化的严重情况;这将取决于浏览器之间甚至浏览器版本之间的不同实现。重复?@Iva不是一个确切的dup,但我投了票,因为这个问题实际上是更有价值,包含相同的信息。
do {
    // ...
} while (true);