0

我的一组javascript代码中有一个大问题:

console.dir(particles[idx]);

返回

Array[0]
0: particle
...
39: particle
length: 40
__proto__: Array[0]
 (index):191

console.log("length:"+particles[idx].length);

返回

length:0

知道为什么长度值为 0 吗?在 console.dir 中,长度为 40。

我以为是在数组创建中,但没有找到原因。

这是填充此数组的代码(在这种情况下,idx = 1):

particles[idx] = [];
(function emitter(cnt) {
    setTimeout(function(){
    particles[idx].push(new particle());
        if (--cnt) emitter(cnt);
        }, 50);
    })(particles_count);

谢谢你的帮助。

[编辑]

我有这段代码可以正确返回数组长度:

        (function emitter(i) {
            setTimeout(function () {
            particles.push(new particle());
                if (--i) emitter(i);
            }, 50);
        })(particle_count);

唯一的区别在于不使用索引的粒子数组。

4

1 回答 1

1

particlesparticles[idx].length是一个包含 40 个项目但返回 40 个项目长度之一的长度的数组。喜欢:

var particles = ['','','',''];

particles.length是 4 但是particles[0].length是 0 因为particles[0] = ''

于 2013-11-11T21:36:53.097 回答