为什么中缀增量运算符 (++) 不能用于 IIFE?
Why can't the infix increment operator (++) be used for an IIFE?
我正在学习 javascript,我对 IIFE
语法感到震惊。
我明白要写 IIFE
我们需要将函数作为表达式然后调用它。
我们可以通过在 ()
之间包装函数使其成为表达式。或者在函数关键字前加上 +
,-
,~
,!
.
现在的问题是,当我以 ++
为前缀时,我在控制台中收到错误消息。
代码:
++function(){console.log("hello")}();
错误:
Uncaught ReferenceError: Invalid left-hand side expression in prefix operation
为什么我不能使用 ++
? ++
是一个一元运算符,我认为它会让解释器将匿名函数视为函数表达式,就像 +
、-
等一样。
我哪里错了?
++
修改右边的值就位因此你必须在RHS上放一些可以存储任何新值。 return 函数调用的值被传递到左侧,但它本身不是存储位置。
无法分配给
如错误消息所述,函数()...不是有效的左侧表达式,即不能将其分配给到。
+、-、~、!将导致表达式被求值。另一方面,增量运算符 (++) 不仅会导致表达式被求值,还会被 修改 ,这对于此表达式是不允许的。
我正在学习 javascript,我对 IIFE
语法感到震惊。
我明白要写 IIFE
我们需要将函数作为表达式然后调用它。
我们可以通过在 ()
之间包装函数使其成为表达式。或者在函数关键字前加上 +
,-
,~
,!
.
现在的问题是,当我以 ++
为前缀时,我在控制台中收到错误消息。
代码:
++function(){console.log("hello")}();
错误:
Uncaught ReferenceError: Invalid left-hand side expression in prefix operation
为什么我不能使用 ++
? ++
是一个一元运算符,我认为它会让解释器将匿名函数视为函数表达式,就像 +
、-
等一样。
我哪里错了?
++
修改右边的值就位因此你必须在RHS上放一些可以存储任何新值。 return 函数调用的值被传递到左侧,但它本身不是存储位置。
无法分配给
如错误消息所述,函数()...不是有效的左侧表达式,即不能将其分配给到。
+、-、~、!将导致表达式被求值。另一方面,增量运算符 (++) 不仅会导致表达式被求值,还会被 修改 ,这对于此表达式是不允许的。