参数两侧的JavaScript增量(++)运算符?
我很努力地理解Javascript的增量操作符的行为,更具体地说,为什么某些情况下失败。参数两侧的JavaScript增量(++)运算符?
为什么在参数两边添加增量运算符失败?
例:
let a = 1;
++a++;
这将返回一个可怕的错误,指出:
ReferenceError: Invalid left-hand side expression in prefix operation
这是什么意思,和我应该担心吗?
递增运算符用于变量而不是表达式。你不能增加一个数字表达式:
3++ // Uncaught ReferenceError: Invalid left-hand side expression in postfix operation
这样做的原因是,它必须增加值,然后保存回变量。如果你给它任何旧的数字表达式,它会将结果赋给什么?
其中两个运营商将工作的,但它返回操作中,它是一种表达,而不是一个变量的结果:
++(a++)
第一个操作符,a++
,将递增a
,并返回结果:2
。第二个运算符然后试图对值为2
执行增量,这是无效的语法。
你的回答比我的好,但我会补充说'a ++'正在被执行(错误说“...在前缀操作”,而不是“...后缀操作”)。 –
谢谢@JuanTonina,我不记得运营商的优先级 –
该代码可以被重写为:++(a++)
这将转换为++(1)
,然后++1
,这不是一个有效的表达式。
你为什么用这个? – Derek
由于++ a,您会收到此错误。正确的语法是一个++。我不确定你想用++来达到什么目的。你能详细说明一下吗? – jonode
我试图想到这种情况下,这将是必要的或有用的,并且快来 – j08691