Javascript 为什么这个错误的IIFE函数返回这个
我在玩iLife函数,输入错误。将以下内容粘贴到控制台中,然后按enter键:Javascript 为什么这个错误的IIFE函数返回这个,javascript,Javascript,我在玩iLife函数,输入错误。将以下内容粘贴到控制台中,然后按enter键: function A() {}("hello",6) 在控制台中,它打印6。为什么会这样?tl;dr:函数没有返回任何内容,因为它没有执行 JavaScript解释器将: A函数声明 function A() {} 后跟一个表达式语句 ("hello",6) expression语句由包含的组成,它返回右操作数的结果,即6 如注释中所述,如果希望将其解释为IIFE,请将函数定义(或整行)括在括号中: (fun
function A() {}("hello",6)
在控制台中,它打印
6
。为什么会这样?tl;dr:函数没有返回任何内容,因为它没有执行
JavaScript解释器将: A函数声明
function A() {}
后跟一个表达式语句
("hello",6)
expression语句由包含的组成,它返回右操作数的结果,即6
如注释中所述,如果希望将其解释为IIFE,请将函数定义(或整行)括在括号中:
(function A() {})("hello",6)
// or
(function A() {}("hello",6))
JavaScript逗号运算符我认为你想要
(函数A(){})(“hello”,6)
作为一个IIFE,否则这与函数A(){}相同;(“hello”,6)
该代码不会将任何内容打印到控制台(除非您将其粘贴到控制台中,ok),但该函数不会在代码中调用,如果您在控制台中键入该函数,您会发现出于某种原因,它会打印6。听起来像是一个与逗号运算符有关的控制台奇怪之处,但我不确定听起来像控制台奇怪之处是什么不,这是控制台的工作方式。。。在控制台中键入“hello”,它将打印“hello”,在控制台中键入6,它将打印6…!函数(){}(…)
也是一个option@Taplar,或+
,-
,~
。。。哦,我知道还有另外一个——如下所示:呸,很有趣。我想
是()
的快捷方式,但我想这只是强制它计算表达式还是什么?新事物@塔普拉:是的,
是布尔NOT运算符。因此,A
是一个函数声明,它是不可调用的,但是在它后面放上括号不会引发错误(即使某些linter可能会警告您,它会引发错误),它只会导致解释器将括号解析为一个独立表达式(也可能在下一行)它会被评估然后被丢弃。(除了在控制台中,我认为输入代码后计算的最终表达式会被打印出来)