使用setInterval函数在Javascript中填充数组

时间:2014-11-23 10:10:40

标签: javascript

我的目标是使用setInterval函数动态填充数组。所以我创建了一个全局变量数组,我可以在setInterval函数的范围之外访问它。但是当我尝试做console.log时,它是空的。

但是,如果我尝试在setInterval函数中执行console.log,我可以看到每1000毫秒填充一次数组。

它应该是一个全局变量,所以我应该能够看到变量吗?为什么在功能之外看不到它?

下面是代码:

var array = [];
var n;

setInterval(function(){
    n = Math.random();
    if(n < 0.5){
        array.push('white');
    }else{
        array.push('black');
    }
    // console.log(array);   // i can see the array here
}, 1000);

console.log(array); // but i cannot see the array here

更新:

好的,我现在知道它为什么空了。所以当我把setTimeout设为5secs时,我现在可以看到内容了。

setTimeout(function(){
  console.log(array); // i can now see the array!
}, 5000);

4 个答案:

答案 0 :(得分:0)

因为你使用setInterval,延迟1秒,要添加到数组,最后一行console.log(array);在任何一个interval函数之前执行,所以数组仍然是空的。 / p>

这里有好消息:http://javascript.info/tutorial/settimeout-setinterval

答案 1 :(得分:0)

我很确定你“看不到”的数组实际上是显示正确的数组,一个空数组。它在函数first array.push之前被调用,因此它显示为空。

答案 2 :(得分:0)

setInterval计划要异步执行的函数。这意味着首先执行以下代码,然后在一段时间之后执行调度函数。

答案 3 :(得分:-1)

我无法看到数组的原因是因为没有足够的时间让控制台记录内容,所以通过添加另一个setInterval或setTimeout来延迟执行console.log,我现在可以看到内容。

var array = [];
var n;

setInterval(function(){
    n = Math.random();
    if(n < 0.5){
        array.push('meron');
    }else{
        array.push('wala');
    }
    // console.log(array);   // i can see the array here
}, 1000);

setInterval(function(){
  console.log(array); // i can now see the array!
}, 2000);