gpt4 book ai didi

Javascript - 为什么这个函数值没有在每次调用时重置

转载 作者:行者123 更新时间:2023-12-03 03:08:03 24 4
gpt4 key购买 nike

我制作了一个 jsbin 来演示我的意思。为什么计数递增?我虽然在每次调用函数时都会重置所有内部变量。

http://jsbin.com/kilonepece/edit?html,js,console,output

function test(text) {
var count = 0;

return function() {
console.log(text + ' ' + count);
count++;
}
}

document.getElementById('button').addEventListener('click', test('clicked'));

这会导致记录到控制台。

“点击了 0”“点击了1”“点击2”“点击了3”“点击了 4”

等等

最佳答案

每次调用test时,count都会重置。您要做的就是调用 test 一次并将返回的函数分配为事件处理程序。这使得事件处理程序的 count 启动时具有 0 值,然后在每次点击时递增该值。

count 不是闭包的“内部”变量,仅是您仅调用一次的 test 函数的“内部”变量。

关于Javascript - 为什么这个函数值没有在每次调用时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47080878/

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