为什么不可能在Javascript中重用空数组?

为什么不可能在Javascript中重用空数组?,javascript,arrays,Javascript,Arrays,我用几种编程语言编程,有时我也有一些使用Javescript的经验 我的情况是:我有一个数组作为全局变量(myArray)。当某些事件发生时,我需要用数据库中的数据重新填充myArray。所以我编写了myFunction,其中myArray被清空以删除最终的旧数据,然后再次填充新数据 如果我不删除数组内容,一切正常,但是(当然)数组可能也包含较旧的数据,并且每次调用函数时都会增长,我不希望这样 我不明白的是: 如果我在myFunction启动时删除myArray的内容,我无法再次重新填充它 这里

我用几种编程语言编程,有时我也有一些使用Javescript的经验

我的情况是:我有一个数组作为全局变量(myArray)。当某些事件发生时,我需要用数据库中的数据重新填充myArray。所以我编写了myFunction,其中myArray被清空以删除最终的旧数据,然后再次填充新数据

如果我不删除数组内容,一切正常,但是(当然)数组可能也包含较旧的数据,并且每次调用函数时都会增长,我不希望这样

我不明白的是: 如果我在myFunction启动时删除myArray的内容,我无法再次重新填充它

这里是我的代码的简化版本,感谢大家的帮助:

myArray = []; // global variable

// IN MYFUNCTION
//first empty the array, then refill it with data from DB
{
//  Let's empty myArray, tried all 4 different ways to do that -- no difference:

// Way 1)
//while(myArray.length > 0) {  myArray.pop(); }

//OR Way 2)
//myArray.length=0;

//OR Way 3)
//myArray.splice(0,myArray.length);

//OR Way 4)
myArray = [];

    dataNamesQuery = "SELECT something FROM db according user's input";

    DatabaseInterface.get_data_now(dataNamesQuery).get({}, function(result){
        allDataNames = result.Results;

        for(i in allDataNames){
            myArray.push(allDataNames[i].something);
        }
    });
 }
//IF I DELETE THE CONTENT OF MYARRAY, THIS WILL PRINT NOTHING;
//ELSE IF I DON'T DELETE ITS CONTENT, THE ARRAY CONTAINS NEW AND OLD DATA
    for(ix in myArray){
        console.log("in myArray got " + myArray[ix]);
    }

} //MYFUNCTION END
--编辑--

  • 我看到这个问题被标记为重复,也许是,只是我找不到一个适合这种情况的问题

  • 我从您列出的答案中看到,问题可能是同步的,所以我必须了解这个主题


  • 尝试将记录myArray的for循环移动到数据库的result函数中,看看它是否会记录您是否直接在数据库中运行
    dataNamesQuery
    @Simon是的,在result函数中移动循环可以让我看到myArray已满。但是,既然它是一个全局变量,为什么在该函数之后它是空的呢?@Jonathan查询是由另一个函数(get_data_now)在DB中运行的,您知道吗?