首页 > 解决方案 > 为什么js'for循环的最后一条语句不能加分号?

问题描述

js的for loop正式格式如下:

for (statement 1; statement 2; statement 3) {
  code block to be executed
}

为什么不能在末尾添加分号statement 3

for (statement 1; statement 2; statement 3;) {
  code block to be executed
}

请告诉我逻辑而不是规则。

标签: javascriptfor-loop

解决方案


这些不是像通常那样的语句终止符;,它们是for语法的特定部分。

就像这样:

for (let i = 0; i < 10; ++i) { ... }

与此完全不同:

let i = 0;
i < 10;
++i;

这与语言的解析方式以及每个符号在任何给定上下文中的含义有关。有时;是语句终止符,但您可能知道并非总是如此:

let semicolon = ";";

那里有两个分号,只有一个是语句终止符。一个是字符串的一部分。同样,里面的那些for也很特别。

如果您查看 MDN 上的正式定义,您可以看到for定义为:

for ( init_clause ; cond_expression ; iteration_expression ) loop_statement     

其中每个术语、init_clausecond_expression都是iteration_expression允许的特定表达式,并且它们的特定功能在下面定义。

for语句的特定语法继承自相同的 C 版本

JavaScript 完全有可能在这里选择了一些其他符号,例如#,并且它的工作方式相同,但是对于那些熟悉 C 或其他具有与 C++ 完全相同的结构的受 C 启发的语言的人来说,这会让 JavaScript 感觉有点奇怪和Java。


推荐阅读