JavaScript Global数组返回未定义



我正在使用一个数组来存储Google地理编码API的格式化结果。函数调用后,我使用console.log查看数组的内容,该数组的工作正常,但是当我尝试访问单个元素时,它会返回"未定义"。当我还检查数组长度时,我会得到零。这是我的代码(地址indput是存储三个地址的对象):

function startGeocode(addressInput) {
  var addressOut = [];
  var outString = "";
  var address = "";
  for(var i = 0; i < addressInput.length; i++) {
    address = addressInput[i].address + " " + addressInput[i].city + " " + addressInput[i].state + " " + addressInput[i].zip;
    geocoder.geocode({'address':address}, function(results,status) {
      if(status == 'OK') {
        outString = "" + results[0].geometry.location;
        outString = outString.replace(/(|)|s/g,'');
        outString = outString.replace(/,/g,' ');
        addressOut.push(outString);
      } else {
        outString = "Error: " + status;
        addressOut.push(outString);
      }
    });
  }
  console.log(addressOut);
  console.log(addressOut[0]);
  console.log(addressOut.length);
}

三个控制台。log调用返回以下内容:

/* (Using a codeblock for readability)
Array[0]
0:"(a correctly formatted latitude and longitude)"
1:"(a correctly formatted latitude and longitude)"
2:"(a correctly formatted latitude and longitude)"
addressOut[0]: undefined
addressOut.length: 0
*/

所以我的问题是,为什么我要获得的数组长度为零,为什么我不能参考数组的元素?

,因为您正在使用异步函数geocoder.geocode。这意味着您要在此功能完成之前打印到控制台var。使用回调或承诺。

最新更新