今天我偶然发现了这个javascript片段。
var x = 5, y = 6;
x
++
y
alert (x + " " + y);
我想知道为什么这不会引发语法错误,更多为什么y最后为7? 如果有任何奇怪的片段有什么用?
答案 0 :(得分:7)
这是由于自动分号插入所致。在JavaScript中,分号不是可选的。它们通过让运行时为您添加它们来模拟可选项。
解析器只能在这方面做得很好。基本算法是“如果该行是一个有效的语句,那么在它之后输入一个分号并执行它,如果不是,则继续下一行”
解析器将该代码转换为:
var x = 5, y = 6;
x;
++
y;
alert (x + " " + y);
现在流行的是分散冒号,但我仍然认为在JS编写多年后,这是一个坏主意。
答案 1 :(得分:6)
我认为,原因是Javascript的Automatic Semicolon Insertion(ASI)。 代码解释如下:
var x = 5, y = 6;
x;
++y;
alert (x + " " + y);