以下代码(包括IIFE)会导致Node(node:v8.6.0)环境出错。
function A(){}
A()
(function(){})()
A(...)不是函数
此错误信息让我感到困惑。
如果我更改IIFE的位置,代码将在Node中成功运行。
(function(){})()
function A(){}
A()
我在谷歌搜索了答案,但没有找到原因。
答案 0 :(得分:2)
在此片段中:
function A(){}
A()
(function(){})()
您正在使用(
开始第三行,JS解析器将其解释为函数调用。在这种情况下,automatic semicolon insertion会让您失望。
您可以尝试这样做:
function A(){}
A(); // <-----
(function(){})()
或
function A(){}
A()
;(function(){})()
两者都可以解决问题。
避免与(
或[
一起开始。
答案 1 :(得分:0)
如果您使用;
,则可以解决此问题。
表达式应以;
结尾以避免此问题:
function A(){}
A();
(function(){})()