Uncaught SyntaxError: Invalid left-hand side expression in postfix operation

Uncaught SyntaxError: Invalid left-hand side expression in postfix operation

拜托!帮帮我,我超级困惑。

为什么

true++

结果

"Uncaught SyntaxError: Invalid left-hand side expression in postfix operation"

但是

undefined++ 

NaN

如果我这样做。

let a = true;
a++;
a;

答案是2。

您只能递增您可以赋值的东西,即变量、数组成员或对象属性。您不能增加常量。 true 是常量,所以 true++ 是语法错误,例如 true=512++13=7.

undefined 不是 常量,它传统上是全局对象的 属性 (因为某些早期 JS 版本中的错误太晚了修复)。因此解析器不会抱怨 undefined++,尽管这个表达式没有意义(并在严格模式下引发错误)。