我是一名JavaScript新手。我已经搜索了很多答案,但似乎无法解决这个问题。我将数组传递给函数时,它们没有被正确地作为引用传递。我不认为这是异步问题,尽管许多帖子都在暗示这一点,但我可能错了。
我有一些全局数组,我将它们传递给函数。在函数内部,数组返回其正确的值,但是当我尝试在函数外部访问它们时,它们是未定义的。
为了上下文,我正在传递3个数组,它们保存干球温度、湿球温度和测量时间的小时数,以便进行后续计算。出于简洁起见,我仅包含了一些样本数据点。以下是示例代码:
function run(){
var hour = [];
var db = [];
var wb = [];
var cities = ["AB Edmonton","MI Detroit"];
getData(hour, db, wb, cities);
//this shows undefined, although within getData it is accurate data
alert(hour[1]);
}
function getData(hour, db, wb, cities){
//i= drop-down selection index, set to zero for testing
i=0;
switch(cities[i]) {
case "AB Edmonton":
hour = [1,2,3];
db = [15,18,21];
wb = [10,13,20];
break;
//case "MI Detroit":....
}
//this shows accurate values in the alert window
alert(cities[i] + " at hour:" + hour[i] + " the temp is:" + db[i]);
return [hour, db, wb];
};
getData
函数中,或者在函数外部定义它。目前,cities 只在run
中被定义,getData
无法访问它。确保研究闭包。 - DomgetData();
放入一个变量中。我认为你不需要将hour, db, wb
传递给函数,你只需要传递 cities。 - Abhi