为什么此错误的IIFE函数返回此错误

时间:2019-04-15 23:01:38

标签: javascript

我当时正在玩IIFE功能,但打错了密码。将以下内容粘贴到控制台中,然后按Enter:

function A() {}("hello",6)

在控制台中,它打印6。为什么会这样?

1 个答案:

答案 0 :(得分:3)

tl; dr:该函数由于未执行而不会返回任何内容。


JavaScript解释器将转到parse this as two statements

功能声明

("hello",6)

后跟表达式语句

6

表达式语句由grouping operator组成,其中包含comma operator,它返回 right 操作数的结果,即(function A() {})("hello",6) // or (function A() {}("hello",6))

如评论中所述,如果希望将此解释为IIFE,请将函数定义(或整行)用括号括起来:

{{1}}