在JavaScript中,for(;;){...}是一个无限循环的语法结构。它相当于for循环的一个特殊形式,其中条件部分为空。因此,这个循环会一直运行,直到遇到break语句或程序被终止。

24 浏览
0 Comments

在JavaScript中,for(;;){...}是一个无限循环的语法结构。它相当于for循环的一个特殊形式,其中条件部分为空。因此,这个循环会一直运行,直到遇到break语句或程序被终止。

我在一些JavaScript代码中看到过这种写法,但我不知道它的作用是什么。\n

for(;;){
  //其他代码
}

\n我习惯于使用for(i=0;i的格式,但我现在卡住了,无法弄清楚\"(;;)\"这种语法是用来做什么的?

0
0 Comments

在JavaScript中,for(;;)创建了一个无限循环。它的语法与我们通常看到的相同,只是在分号之间没有代码。

for循环的语法包括一个初始化器,后面是一个用于继续循环的条件,再后面是一个分号,最后是每次迭代后要运行的代码。

由于没有初始化器,没有评估为false的条件,也没有循环后的代码,因此循环会永远运行。

出现这个问题的原因是循环的条件永远为真,没有结束循环的判断。这可能是程序员的错误或者是故意为了创建一个无限循环。

解决这个问题的方法是在循环的条件中加入一个能够评估为false的判断,或者在循环体中添加一个跳出循环的语句,例如使用break关键字。

下面是一个示例,演示了如何修复这个问题:

for(;;) {
  // 无限循环的代码
  
  if (someCondition) {
    break; // 跳出循环
  }
}

在这个示例中,我们在循环体内部添加了一个条件判断,当满足某个条件时,使用break关键字跳出循环。

通过这种方式,我们可以避免无限循环的问题,并在需要时正常结束循环。

0
0 Comments

在JavaScript中,使用for (;;)表达式可以创建一个无限循环。这是因为在for循环中,可以省略在分号之间的部分,甚至可以省略所有部分。如果省略了条件部分,那么默认条件为true,因此会导致无限循环。当然,你仍然可以使用breakreturn等语句来退出循环,从而使其不是无用的。

解决方法:

要解决这个问题,可以在循环体中添加条件判断语句,以在特定条件下退出循环。例如,可以使用if语句来检查某个条件是否满足,如果满足则使用break语句退出循环。

以下是一个示例代码:

for (;;) {
  // 循环体代码
  if (condition) {
    break;
  }
}

在上面的代码中,我们在循环体中添加了一个条件判断语句if (condition),如果满足条件,就会执行break语句退出循环。

通过在无限循环中添加条件判断语句,我们可以控制循环的执行,避免出现无限循环的情况。这样可以确保程序的正常运行,并避免浪费计算资源。

0
0 Comments

在JavaScript中,for(;;){...}创建了一个无限循环,几乎与以下形式完全相同:

while(true){
    //...
}

或者

do{
    //...
}while(true);

好的。那么这是for的“可接受”用法吗?还是while(true)更清晰一些?

while(true)可能会更容易被其他人注意到,并且可能更好地展示出你创建无限循环的目的。虽然我不确定是否存在任何性能方面的考虑(除了它会一直运行直到结束)。也许更好的做法是这样:var tester = true; while(tester) { /* ... */ tester = false; },这样当你将tester设置为false时会退出循环(或者你可以使用break语句)。

我用Chrome分别运行了这两个循环1000000次,for(;;)稍微快了一点,大约快了1%。

我使用了一个简单的基准函数:stackoverflow.com/questions/1003855/…

for循环和while循环的语法继承自C语言。很长一段时间,C语言没有内置的布尔类型,所以for(;;)的替代品是while(1)。这两种写法都是可接受的C语言习惯用法,但并非所有C语言环境都接受。当while(true)可用时,从可读性和概念清晰性的角度来看,它似乎更可取。担心性能是一种过早优化的严重情况;它将取决于实现,这在不同的浏览器甚至浏览器版本之间会有所不同。

0