JavaScript增量字符串上的一元运算符(++)

iul*_*ian 2 javascript specifications

我在Chromium版本53.0.2785.143基于Ubuntu,在Ubuntu 16.04(64位)上运行

根据ECMAScript®语言规范,前缀增量运算符的计算方法如下:

前缀增量运算符评估步骤

考虑到这一点,我无法解释这个结果:

++'1';
> Uncaught ReferenceError: Invalid left-hand side expression in prefix operation
Run Code Online (Sandbox Code Playgroud)

当以下代码像魅力一样工作时:

var x = '1'; 
++x;
> 2
Run Code Online (Sandbox Code Playgroud)

据我所知,在这两种情况下,第二步的前三个要点都是正确的,而对于++'1'案例,第四个子弹也是真的(但为什么?),对于这种++x情况,它是假的,没有引起任何错误.我对吗?

PS:Firefox抛出一个SyntaxError: invalid increment operand而不是一个ReferenceError

Poi*_*nty 10

问题是您的++运算符隐式涉及赋值,并且您不能将新值赋给字符串常量.注意

++2;
Run Code Online (Sandbox Code Playgroud)

出于同样的原因也是错误的.