gpt4 book ai didi

javascript - 点击计数器(通过闭包)不会增加

转载 作者:行者123 更新时间:2023-12-03 10:46:51 34 4
gpt4 key购买 nike

由于某种原因,我的代码似乎无法跟踪局部变量 i 的增量,并且它总是返回其初始值 0。

这是我玩过的 JSFiddle http://jsfiddle.net/ou2uxwn5/20/

var counter = function(){
var i = 0;
console.log(i);
return function(){
i++;
return i;
};
};

不确定垃圾收集器是否会把它吃掉,尽管行为与定义的 var 调用相同(我希望这会创建引用而不是将局部变量 i 扔进垃圾箱)。

代码有什么问题,为什么?

最佳答案

您应该立即执行第一个函数,以避免后续出现任何困惑。这将返回一个新函数并将其分配给计数器

var counter = (function(){
var i = 0;
console.log(i);
return function(){
i++;
return i;
};
})(); // logs 0 in the console

调用counter()将增加i并返回它的值。

console.log(counter()); // logs 1 in the console
console.log(counter()); // logs 2 in the console

我建议您阅读有关闭包的内容,以更好地了解它们的工作原理。这是一个good place to start .

关于javascript - 点击计数器(通过闭包)不会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28548009/

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