gpt4 book ai didi

javascript - 理解不同的嵌套函数调用

转载 作者:行者123 更新时间:2023-11-30 20:23:40 25 4
gpt4 key购买 nike

我知道有很多与调用嵌套函数相关的好答案,但我的问题恰好不同。

假设我们有这样一段代码

function a() {
var c = 0;
function b() {
alert(c++);
}
return b;
}
var d = a();
d();

这里我们做了return b然后

 var d = a();
d();

调用它,即它仅在我们执行 d(); 时运行,但代码几乎相同

function a() {
var c = 0;
function b() {
alert(c++);
}
return b();
}

var d = a();

我们做return b();的地方,我们可以直接用var d = a();调用,不需要调用d( );,为什么会这样?我知道 return b 和 return b() 的区别是有区别的,但仍然有人可以解释为什么,我们可以通过 var d = a(); 直接调用它而不是需要调用`d();?

最佳答案

如果我正确理解了您的问题,那么发生的情况是,通过在 var d = a(); 中添加括号,您实际上是在调用函数 a。运行代码时

function a() {
var c = 0;
function b() {
alert(c++);
}
return b();
}

var d = a();
d();

它给出了一个错误,发生的事情是 d 不是函数,当您将 a() 分配给 var d 时,您正在分配 a()的result,在function a中,会返回a的结果,因为return b()实际上是在调用function b 返回function bresult,所以反过来,var d在代码运行时实际上等于0。如果要将实际函数a赋给变量d,只需像这样去掉括号

function a() {
var c = 0;
function b() {
alert(c++);
}
return b;
}

var d = a; <-------
d();

而且效果很好。

关于javascript - 理解不同的嵌套函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51166305/

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