参数两侧的JavaScript增量(++)运算符?

参数两侧的JavaScript增量(++)运算符?

问题描述:

我很努力地理解Javascript的增量操作符的行为,更具体地说,为什么某些情况下失败。参数两侧的JavaScript增量(++)运算符?

为什么在参数两边添加增量运算符失败?

例:

let a = 1; 
++a++; 

这将返回一个可怕的错误,指出:

ReferenceError: Invalid left-hand side expression in prefix operation 

这是什么意思,和我应该担心吗?

+4

你为什么用这个? – Derek

+0

由于++ a,您会收到此错误。正确的语法是一个++。我不确定你想用++来达到什么目的。你能详细说明一下吗? – jonode

+1

我试图想到这种情况下,这将是必要的或有用的,并且快来 – j08691

递增运算符用于变量而不是表达式。你不能增加一个数字表达式:

3++ // Uncaught ReferenceError: Invalid left-hand side expression in postfix operation 

这样做的原因是,它必须增加值,然后保存回变量。如果你给它任何旧的数字表达式,它会将结果赋给什么?

其中两个运营商将工作的,但它返回操作中,它是一种表达,而不是一个变量的结果:

++(a++) 

第一个操作符,a++,将递增a,并返回结果:2。第二个运算符然后试图对值为2执行增量,这是无效的语法。

+0

你的回答比我的好,但我会补充说'a ++'正在被执行(错误说“...在前缀操作”,而不是“...后缀操作”)。 –

+0

谢谢@JuanTonina,我不记得运营商的优先级 –

该代码可以被重写为:++(a++)这将转换为++(1),然后++1,这不是一个有效的表达式。