Javascript 为什么IIFE中的多个函数执行最后一个函数?
我实际上不知道这段代码的输出是一个数字。有人愿意帮助理解这个例子中JS运行的逻辑是什么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中返
变量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个函数并执行它们呢?那么会发生什么?如果最后一个什么也没有返回呢?