我当时正在玩IIFE功能,但打错了密码。将以下内容粘贴到控制台中,然后按Enter:
function A() {}("hello",6)
在控制台中,它打印6
。为什么会这样?
答案 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}}