var x=0, y=0;
var z=
x
++
++
y
注释说:
Since LineTerminator(LT) between Postfix Increment/Decrement Operator(I/DO) and operand is not allowed, two IO(just as two DO and their combination) between two references separated by [LT] after automatic semicolon insertion lead to syntax error
为什么这段代码会导致语法错误?我认为这是一个有效的代码片段。上面的代码等于 var z=x;++++ y;
。表达式 ++++ y
为 allowed通过 JavaScript 语法。那么问题出在哪里呢?
最佳答案
这段代码将变成:
var z = x;
++ ++ y;
++++ y
是问题的根源。让我们看看为什么......
++++ y
的计算结果为 ++(++y)
。第一步是评估 (++y)
。 ++
运算符递增其旁边的变量引用的值,并返回递增后的值。这里重要的部分是它不返回引用,只返回一个值。因此第二步将是 ++(1)
(或任何 ++y
产生的结果),这是一个错误,因为只有引用可以递增。
关于Javascript 和自动分号插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325011/