gpt4 book ai didi

javascript - 在javascript中声明存储在函数数组中的函数时为变量赋值

转载 作者:行者123 更新时间:2023-11-30 12:45:11 26 4
gpt4 key购买 nike

在将函数添加到函数数组之前,将值存储在函数变量中的最佳(或良好)做法是什么?

比如我们有一个计数器:

var f_counter = 0;

...我们有一个函数数组:

var a_func = [];

当我们向数组添加一个函数时,我们可以这样做:

a_func.push(
function(){
examplecallbackfunction(f_counter);
}
);
f_counter++;

这里是示例回调函数:

function examplecallbackfunction(c) {
<... code ...>
}

遍历并执行函数数组:

var l = a_func.length;
while (l>0) {
var fnc=a_func[l-1];
fnc();
l--;
}

这里的问题是,当执行函数数组时,参数 f_counter 是当前全局变量 f_counter 的值,而不是将单个函数添加到函数数组时 f_counter 的值。

我需要一个良好的实践,在将 f_counter 的当前值分配给函数数组之前将其存储在函数定义中,并且在迭代和执行数组中的函数时,它应该例如使用存储的值调用回调函数.

我需要一种方法来做到这一点,而不需要将单个值存储在全局变量中,因为我根据用户交互加载异步内容,所以我永远不知道“提前”有多少函数和什么类型的函数将存储在函数中大批。有些函数可能有比 f_counter 更多的变量,等等......

最佳答案

将您的函数包装在一个函数中,该函数在被插入数组时执行。这将围绕该变量形成一个额外的闭包。现在闭包围绕全局变量,所以当函数实际执行时,该全局变量可能不是函数被插入循环时的样子。

这是您的代码,其中包含一个额外的函数;没有测试它,但你应该明白这个想法:

a_func.push(
(function(counter){
function() {
examplecallbackfunction(counter);
}
})(f_counter) //execute function immediately
);
f_counter++;

关于javascript - 在javascript中声明存储在函数数组中的函数时为变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768717/

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