gpt4 book ai didi

javascript - 如何在循环函数时存储变量 - javascript 闭包

转载 作者:行者123 更新时间:2023-12-02 16:01:13 25 4
gpt4 key购买 nike

我有以下代码可以使用:

function loopingFunction(){

if(typeof(foo)=="undefined"){
var foo = 0;
}

alert(foo);

if(foo==0){
// some codes here
}

foo++;
}

loopingFunction 被多次调用,每次我的变量 foo 都保持不变......不知何故,当我尝试增加它时它会丢失

计数器似乎不起作用,每次调用函数时都会增加 var foo 的值。

有什么解决办法吗?任何帮助将不胜感激..

仅供引用,我无法使 foo 全局化,我必须使用闭包找到解决方法..

最佳答案

您在函数内声明foo。它的范围仅限于该函数。每次调用该函数时,都会创建一个名为 foo 的新变量。

如果要重用同一变量,请在外部声明。

var foo;

function loopingFunction() {

if (typeof foo === "undefined") {
foo = 0;
}

alert(foo);

if (foo == 0) {
// some codes here
}

foo++;
}

loopingFunction();
loopingFunction();
loopingFunction();

您也可以在循环之外执行所有初始化以简化操作。

var foo = 0;

function loopingFunction() {

alert(foo);

if (foo == 0) {
// some codes here
// … these could probably be moved outside the function too
}

foo++;
}

loopingFunction();
loopingFunction();
loopingFunction();

如果你想让 foo 不成为全局的,你可以使用闭包:

var loopingFunction = function() {

var foo = 0;

function loopingFunction() {

alert(foo);

if (foo == 0) {
// some codes here
// … these could probably be moved outside the function too
}

foo++;
}

return loopingFunction;

}();

loopingFunction();
loopingFunction();
loopingFunction();

关于javascript - 如何在循环函数时存储变量 - javascript 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182937/

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