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