为什么不能将中缀增量运算符(++)用于IIFE?

时间:2017-03-24 21:28:36

标签: javascript function iife

我正在学习javascript,而且我在IIFE语法上受到了打击。

我理解要编写IIFE我们需要将函数作为表达式然后调用它。

我们可以通过在()之间包装函数来使其成为表达式。或者在函数关键字前加上+-~!

现在针对这个问题,当我使用++前缀时,我在控制台中收到错误。

代码:

++function(){console.log("hello")}();

错误:

Uncaught ReferenceError: Invalid left-hand side expression in prefix operation

为什么我不能使用++++是一元运算符,我认为它会使解释器将匿名函数视为函数表达式,就像+-等一样。

我哪里错了?

2 个答案:

答案 0 :(得分:5)

无法分配到

正如错误消息所示,函数()...不是有效的左侧表达式,即无法将分配给

+, - ,〜,!将导致表达式评估。另一方面,增量运算符(++)不仅会对表达式进行求值,还会对 modified 进行求解,而这个表达式不允许这样做。

答案 1 :(得分:3)

++ 修改右侧的值因此您必须在RHS上放置一些可存储新值的内容。函数调用的返回值传递到左侧,但不是存储位置。