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

时间:2017-06-14 19:44:33

标签: javascript

我很难理解Javascript增量运算符的行为,更具体地说,为什么某些情况会失败。

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

示例:

let a = 1;
++a++;

这会返回一个可怕的错误,说明:

ReferenceError: Invalid left-hand side expression in prefix operation

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

2 个答案:

答案 0 :(得分:8)

增量运算符处理变量,而不是表达式。您不能递增数字表达式:

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

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

两个运算符中的一个将起作用,但它返回操作的结果,这是一个表达式,而不是变量:

++(a++)

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

答案 1 :(得分:4)

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