【问题标题】:for loop with a single semicolon throws the error "Uncaught SyntaxError: Unexpected token ')"带有单个分号的 for 循环会引发错误“Uncaught SyntaxError: Unexpected token ')”
【发布时间】:2021-08-10 08:05:02
【问题描述】:
下面的 for 循环可以正常工作
for (let count = 0;; count++) {
console.log(count);
if (count >= 3)
break
}
当只有一个分号 ; 而不是两个时会引发错误
for (let count = 0; count++) {
console.log(count)
if (count >= 3)
break
}
Uncaught SyntaxError: Unexpected token ')
【问题讨论】:
标签:
javascript
for-loop
iterator
console
break
【解决方案1】:
这正是 for 循环语法的工作原理。 for 循环中的分号将三个不同的表达式彼此分开——“变量初始化”语句、“停止条件”表达式和“后迭代”表达式(我只是在这里编名字,但它们适合他们的目的)。
所以,在这行代码中:
for (let count = 0;; count++)
通过在此处放置两个分号,您基本上是在说没有中间表达式,即这个 for 循环没有停止条件。您可以省略任何您喜欢的部分。 for (;;) 也是一个有效循环,与while (true) 做的事情完全相同。重要的是,循环中总是需要这两个分号。
例如,如果您编写了这行代码:
for (let count = 0; count++)
您只提供了三个必需表达式中的两个。你供应哪两个? count++ 是停止条件吗?还是每次迭代后的动作?它不会让编译器猜测您的意图,而是会引发语法错误并要求您使用两个分号来明确您的意图是将其解释为for (let count = 0;; count++),而不是for (let count = 0; count++;)。
在 MDN here 上了解有关此 c 样式 for 循环的更多信息。