![](/img/trans.png)
[英]Semicolon is optional in JavaScript. However, could I omit the semicolons in the for loop?
[英]May I omit every semicolon at the end of line in all version (if any) of JavaScript?
我正在学习JavaScript,但我莫名其妙地发现我可以跳过输入;
在一行的末尾,只要该行中只有一个语句即可。 实际上,我已经习惯了这一点。 我用Swift开发了一个简单的iOS应用程序,它也支持这种语法。
但是我想知道的是,是否有特定版本的JavaScript或某种不允许程序员省略最后一个分号的JavaScript。 许多语言的语法都有变化。 所以我想JavaScript可能有这种问题。
请注意,尽管所有版本的JavaScript都支持ASI,但仍有ASI的陷阱,这意味着您无法摆脱所有分号。
例如,以下内容将无法正常运行:
function foo() { return [2, 3] }
var x, y, i, j
j = 2
i = j
[x,y] = foo()
您可能希望i
, j
和x
等于2,而y
等于3,如果每行以分号结尾,则会发生这种情况。 但是,事实并非如此。
实际上, i
是[2,3]
,而x
和y
是undefined
。 当ASI在该代码段上运行时,它将最后两行解释为属性访问:
i = j[x,y] = foo()
虽然它原本打算成为破坏性的行动:
i = j;
[x,y] = foo();
解决此问题的方法是在不以[]或()开头的任何行之前使用“防御分号”,而该行不应被视为上一条语句的继续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.