gpt4 book ai didi

javascript - 为什么我必须立即调用立即调用的函数表达式?

转载 作者:行者123 更新时间:2023-11-29 21:16:40 24 4
gpt4 key购买 nike

如果我有:

var calc = function(){
return {
adder: function(x,y){return x+y;}
}
};
calc();
calc.adder(4,5);

calc.adder 未定义。但是,如果我立即调用 calc as

var calc = function(){
return {
adder: function(x,y){return x+y;}
}
}();
calc.adder(4,5);

事情按预期进行。为什么第一个示例会失败?

最佳答案

第一个代码集

calc() 是一个返回对象的函数,该对象包含一个名为 adder() 的函数。所以这会起作用。

var calc = function(){
return {
adder: function(x,y){return x+y;}
}
};

var cal = calc();
cal.adder(4,5);

代码行

calc();

将返回的对象存储在无变量中,因此您不能使用该对象。

第二个代码集

您发布的第二个示例本质上是同一件事。 calc 变量不再是函数,它是未命名函数在使用 () 执行时返回的对象;

关于javascript - 为什么我必须立即调用立即调用的函数表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com