【发布时间】:2020-09-09 11:56:24
【问题描述】:
有人可以解释一下for-loop 的语法,例如 "for (;;)" 我需要知道的是 for-loop 的标头是否像 "for (;;)" 是否拥有 empty-statements。
我搜索了ECMAScript specification,如果for-loop's 标头中的所有可选表达式都像规范中的for (;;) 那样被跳过会发生什么,但我仍然没找到
即使规范没有提到 for-loop 像 for (;;) 循环/运行无限次,有人可以解释一下吗
我需要知道最后一件事为什么人们称for-loop 的标题是Expression's 我看到for 循环的语法允许我们编写像var i = 0 in the header of the for-loop 这样的声明,我明白了for-loops 语法允许我们在其标头中编写 semicolons ; 仅语句需要 semicolons 这是否意味着 for-loop's 标头中的所有语法都具有 Statements
【问题讨论】:
-
documentation at MDN 很清楚。通常,当项目是可选的时,编程文档会将项目放在括号
[]中。 -
一个“空”
for永远运行,因为中止条件仅在有一个时才被评估。没有条件检查 -> 没有理由停止。它在这里定义13.7.4.8 Runtime Semantics: ForBodyEvaluation ( test, increment, stmt, perIterationBindings, labelSet ) -
这是否意味着 for-loop 标头中的所有语法都有 Statements 是的。声明是表达式,语句是表达式,任何需要评估的都是表达式。
-
@ScottMarcus 我不认为声明是
Expressions -
@Kevin 在技术上是正确的。但是,所有声明都包含表达式。
标签: javascript for-loop expression statements ecmascript-2020