gpt4 book ai didi

javascript - 仅当分配给新变量时闭包才起作用 - Javascript

转载 作者:行者123 更新时间:2023-11-28 17:30:55 24 4
gpt4 key购买 nike

我已经开始学习闭包,虽然我开始了解它们,但有一部分没有意义。

在下面的代码中,当我调用原始函数 addSomething() 时,计算不会发生,但是,当我将此函数分配给新变量时 var all = addSomething(); 然后它会产生所需的结果,即它进行数学运算并在控制台中返回 6

有人可以解释两件事吗:

1)我这样做正确吗?

2) 为什么只有在将原函数赋值给新变量时才执行计算?

我发现这部分非常令人困惑。

function addSomething() {
var a = 2,b = 4;

function addIt() {
var total = a + b;
return total;
}

return addIt;
}

var all = addSomething();
console.log(all());

最佳答案

这是因为如果你正在包装函数。第一次调用返回一个函数,第二次调用返回实际值。

您调用addSomething,它返回addIt,这是另一个函数。这就是为什么您需要第二个 () 才能获取 addIt 返回的值。

在您的方法中,您将 addSomething(函数 addIt)的返回值存储在名为 all 的变量中。 all() == addSomething()()

function addSomething() {
var a = 2,b = 4;

function addIt() {
var total = a + b;
return total;
}

return addIt;
}

console.log(addSomething()());

关于javascript - 仅当分配给新变量时闭包才起作用 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50469156/

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