字符串上的JavaScript增量一元运算符(+;+;)
我使用的是基于Ubuntu的Chromium版本53.0.2785.143,运行于Ubuntu 16.04(64位) 根据前缀,前缀增量运算符的计算如下: 考虑到这一点,我无法解释这一结果:字符串上的JavaScript增量一元运算符(+;+;),javascript,specifications,Javascript,Specifications,我使用的是基于Ubuntu的Chromium版本53.0.2785.143,运行于Ubuntu 16.04(64位) 根据前缀,前缀增量运算符的计算如下: 考虑到这一点,我无法解释这一结果: ++'1'; > Uncaught ReferenceError: Invalid left-hand side expression in prefix operation 当以下代码像符咒一样工作时: var x = '1'; ++x; > 2 据我所知,在这两种情况下,第二步的前3
++'1';
> Uncaught ReferenceError: Invalid left-hand side expression in prefix operation
当以下代码像符咒一样工作时:
var x = '1';
++x;
> 2
据我所知,在这两种情况下,第二步的前3个要点都是正确的,而对于++'1'
情况,第四个要点也是正确的(但为什么?),对于++x
情况,它是错误的,不会产生错误。我说得对吗
PS:Firefox抛出了一个
语法错误:无效的增量操作数
而不是引用错误
问题是++
操作符隐式地包含了一个赋值,并且不能为字符串常量赋值。注意
++2;
由于同样的原因,它也是错误的。在我的理解中,
++
类似于+=1
因此,它将适用于
++x
,因为它将被计算为x++=1
或x=x+1
,但是++'1'
是一个字符串文字,并且没有可分配的左侧值,因此它将失败如果您执行++1,顺便说一句PutValue('1',2),则会得到相同的错误
引发错误,因为它无法分配给字符串文字。您需要一个变量或其他类型的引用
…这可能发生在5中。调用PutValue(expr,newValue)
?噢。。我错过了。谢谢你的回答!您甚至可以直接执行'1'=Number('1')+1
,并将得到相同的错误,因为左侧的值无效。不能将'1'
作为变量名Oh。。我错过了。谢谢你的回答!