gpt4 book ai didi

javascript - 一个简单的函数闭包问题——更新计数的计数器函数

转载 作者:行者123 更新时间:2023-12-01 00:06:34 24 4
gpt4 key购买 nike

您好,我这里有一个代码:

/* example counter app */

const incrCounter = () => {
let count = 0;

return () => {
return ++count;
}
}

/* now use the counter */

incrCounter()();
incrCounter()();
alert(incrCounter()()); // expect 3 but gets 1

我希望收到显示 3 的警报,但结果却是 1。

我在这里有一个现场演示: https://jsfiddle.net/gunitinug/L9nrt085/1/

谢谢。

最佳答案

每次调用 incrCounter 时,您都会得到一个返回函数,该函数会关闭刚刚创建的 count 变量。如果您调用 incrCounter 3 次,您将在不同的闭包中获得 3 个单独的 count 变量。

调用它一次以获取在count的单个绑定(bind)上关闭的函数,然后调用该函数3次,以便一个绑定(bind)增加3次:

const makeCounter = () => {
let count = 0;

return () => {
return ++count;
}
}

const counter = makeCounter();
counter();
counter();

console.log(counter());

为函数提供更准确的名称也将使事情更容易理解 - 就像上面一样,您可以调用返回函数的函数makeCounter,并调用返回的函数计数器

关于javascript - 一个简单的函数闭包问题——更新计数的计数器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60330583/

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