【问题标题】:Why can't the infix increment operator (++) be used for an IIFE?为什么不能将中缀增量运算符 (++) 用于 IIFE?
【发布时间】:2017-03-24 21:28:36
【问题描述】:

我正在学习 javascript,我对 IIFE 语法感到震惊。

我知道要写IIFE,我们需要把函数做成表达式,然后调用它。

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

现在的问题是,当我使用 ++ 前缀时,我在控制台中遇到错误。

代码:

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

错误:

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

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

我哪里错了?

【问题讨论】:

  • ++foofoo = foo + 1 相同。由于function() {} = function(){} + 1 不是一个有效的操作,它会抛出一个错误。

标签: javascript function iife


【解决方案1】:

不能分配给

正如错误消息所述,function()... 不是有效的左侧表达式,即不能将其分配给

+, -, ~, !将导致表达式被求值。另一方面,自增运算符 (++) 不仅会导致表达式被求值,而且会导致 modified,这是该表达式所不允许的。

【讨论】:

    【解决方案2】:

    ++ 修改右侧的值就位因此您必须在RHS上放置一些可以存储新值的东西。函数调用的返回值被传递到左边,但它本身并不是一个存储位置。

    【讨论】:

      猜你喜欢
      • 2011-03-12
      • 1970-01-01
      • 2013-03-17
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      相关资源
      最近更新 更多