“setInterval”内“for”的索引

2023-12-03

我有一个对象,我把它放在一个数组中,然后我用for对于数组中的每个对象,我设置了一个设置的间隔,用于使用参数调用对象的方法,但我不能。 这是我的“班级”。

    function ClassTest() {
        this.test = function(word) {
            console.log(word);
        }
    }

我创建对象并将其放入数组中:

    var array = [];
    var objectTest = new ClassTest();


    array.push(objectTest);

当我设置间隔时:

    for(var i = 0; i < array.length; i++) {
        array[i].loop = setInterval(function() {
            array[i].test("hello")
        }, 1000);
    }

问题是 vari在 setInterval 函数不存在时,我可以创建一个 varindex它存在但我不明白为什么index存在和 vari not.:

    for(var i = 0; i < array.length; i++) {
        var index = i;
        array[i].loop = setInterval(function() {
            array[index].test("hello")
        }, 1000);
    }

当我不使用时出现此错误index var:

Uncaught TypeError: Cannot read property 'test' of undefined

因为你的for循环立即执行。到时候你的setInterval()第一次执行时,你的for循环早就结束了,你的i将超出您的数组范围。

Example

在这个例子中,我们的array has a length3. 当我们的for循环结束,我们的i变量将等于3。号码3如果我们登录,将在 JavaScript 控制台中显示三次isetTimeout:

var array = [1, 2, 3];

for (var i = 0; i < array.length; i++) {
  setTimeout(function() {
    console.log(i);
  }, 1000);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“setInterval”内“for”的索引 的相关文章

随机推荐