gpt4 book ai didi

javascript - 有没有办法将索引值保留在 javascript 中的函数本地

转载 作者:行者123 更新时间:2023-11-28 13:31:16 25 4
gpt4 key购买 nike

有什么方法可以防止 index 在此示例中成为全局变量:

var arr = [1, 2, 3, 4, 5];
var index = 0;
function run() {
console.log(arr[index]);
if(++index == arr.length) index = 0;
}

似乎它必须是全局的才能每次检查,但我想知道是否有任何聪明的技巧来绕过全局变量。

最佳答案

您可以使用 closure (此处使用 IIFE 创建):

var run = (function() {
var index = 0;
return function run() {
console.log(arr[index]);
if(++index == arr.length) index = 0;
};
}());

但是由于 arr 也是全局的,因此在我看来这并不是一个巨大的改进。如果它应该是静态数据,最好将数组作为参数传递给函数,或者在 IIFE 中定义它(从代码组织的 Angular 来看)。

或者,您可以将索引作为函数的属性,因为函数只是对象。这有一个缺点(?),即索引从外部是可变的(并且您使函数的实现依赖于函数的名称,该名称也是可变的(可以通过使用命名函数表达式来解决)):

function run() {
console.log(arr[run.index]);
if(++run.index == arr.length) run.index = 0;
}
run.index = 0;

关于javascript - 有没有办法将索引值保留在 javascript 中的函数本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644562/

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