Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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_Html_Function - Fatal编程技术网

Javascript 为什么IIFE中的多个函数执行最后一个函数?

Javascript 为什么IIFE中的多个函数执行最后一个函数?,javascript,html,function,Javascript,Html,Function,我实际上不知道这段代码的输出是一个数字。有人愿意帮助理解这个例子中JS运行的逻辑是什么 变量f=( 函数f(){返回“1”;}, 函数g(){return 2;} )(); 控制台日志(f型); 您正在使用。您基本上是在这里执行g 逗号运算符计算每个操作数(从左到右),并返回最后一个操作数的值 类似于: var temp = function g(){ return 2; } f = temp() // returns 2 这里f不是一个函数 而是包含g函数返回的值 f当前保留IIFE中返

我实际上不知道这段代码的输出是一个数字。有人愿意帮助理解这个例子中JS运行的逻辑是什么


变量f=(
函数f(){返回“1”;},
函数g(){return 2;}
)();
控制台日志(f型);
您正在使用。您基本上是在这里执行
g

逗号运算符计算每个操作数(从左到右),并返回最后一个操作数的值

类似于:

var temp = function g(){ return 2; }
f = temp() // returns 2
这里f不是一个函数

而是包含g函数返回的值

f当前保留IIFE中返回的值

var f=(
函数f(){返回“1”;},
函数g(){return 2;}
)();
控制台日志(f);
因为逗号运算符

这计算a,然后计算b,然后使用b的结果。也就是说,只评估其副作用,否则其结果将被丢弃

也就是说

var f = (
   function f(){ return "1"; }, 
   function g(){ return 2; }
)();
这是一种奇特的写作方式

var f = (function g(){ return 2; })();
var f = 2;
这是一种奇特的写作方式

var f = (function g(){ return 2; })();
var f = 2;

2是一个数字。

所以,右边是逗号运算符。但更重要的是功能上下文的变化。它们不再可以从全局范围访问

以下答案中可能有一些解释:

var f=(
函数f(){返回“1”;},
函数g(){return 2;}
)();
控制台日志(f);
控制台日志(f型);

console.log(g());//抛出错误:未定义“g”
是否有任何逻辑、规则或文档?另外,如果我在()中编写10个函数并执行它们呢?那么会发生什么?如果最后一个什么也没有返回呢?