Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个错误的IIFE函数返回这个_Javascript - Fatal编程技术网

Javascript 为什么这个错误的IIFE函数返回这个

Javascript 为什么这个错误的IIFE函数返回这个,javascript,Javascript,我在玩iLife函数,输入错误。将以下内容粘贴到控制台中,然后按enter键: function A() {}("hello",6) 在控制台中,它打印6。为什么会这样?tl;dr:函数没有返回任何内容,因为它没有执行 JavaScript解释器将: A函数声明 function A() {} 后跟一个表达式语句 ("hello",6) expression语句由包含的组成,它返回右操作数的结果,即6 如注释中所述,如果希望将其解释为IIFE,请将函数定义(或整行)括在括号中: (fun

我在玩iLife函数,输入错误。将以下内容粘贴到控制台中,然后按enter键:

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可能会警告您,它会引发错误),它只会导致解释器将括号解析为一个独立表达式(也可能在下一行)它会被评估然后被丢弃。(除了在控制台中,我认为输入代码后计算的最终表达式会被打印出来)