gpt4 book ai didi

javascript - 为什么这段代码有两个不同的结果?

转载 作者:搜寻专家 更新时间:2023-11-01 04:56:16 25 4
gpt4 key购买 nike

var addCount;
function s1() {
var count = 0;
addCount = function() {
count++;
};
function s12() {
console.log(count)
}
return s12
}
var result1 = s1();
var result2 = s1();
addCount();
result1(); // count = 0;
result2(); // count = 1;

In the picture I marked the puzzled place然后,下一步将以这种方式显示 This is where I am really puzzled

最佳答案

因为 result 是一个函数,被声明为调用 s1 函数的结果。调用 s1 返回 s12 函数,该函数使用一个名为 count 的变量,该变量声明在比它自身更高的级别(作用域)(这是称为“自由变量”)。

当在生命周期比声明自由变量的函数长的函数内部使用自由变量时, "closure" 是围绕该自由变量创建的,即使在声明它的函数终止后,它仍保留在范围内。

当您第一次调用 result 时,count 会加一,并且该值会保留在内存中,因此当您第二次调用它时,您将使用最后一个值。

关于javascript - 为什么这段代码有两个不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372688/

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