javascript - 为什么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
}
请告诉我逻辑而不是规则。
解决方案
这些不是像通常那样的语句终止符;
,它们是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_clause
和cond_expression
都是iteration_expression
允许的特定表达式,并且它们的特定功能在下面定义。
该for
语句的特定语法继承自相同的 C 版本。
JavaScript 完全有可能在这里选择了一些其他符号,例如#
,并且它的工作方式相同,但是对于那些熟悉 C 或其他具有与 C++ 完全相同的结构的受 C 启发的语言的人来说,这会让 JavaScript 感觉有点奇怪和Java。
推荐阅读
- scala - 如何修复这个 Akka 单元测试?
- ios - 如何减少 MessageKit Library Swift 中 2 个消息单元格之间的空间?
- angular - @ username 提及的 z-index 属性
- google-colaboratory - Google Colab:同时编辑两行
- html - 如何更改字体真棒图标的颜色 \f107 颜色。“.icon-classname{color: red;}”不起作用
- javascript - 反应子组件不更新父母状态,所以第二个孩子没有注意到变化
- excel - instr 函数中的逗号是什么意思?
- asp.net-core - 在 Blazor/Razor 中单击按钮时调用函数 - ASP.NET Core 3
- php - 如何在类中创建动态属性并在 PHP 中调用它
- wso2 - WSO2 ISO8583 启动并保持与服务器的连接