如何记录数组的一部分?

时间:2018-12-27 19:57:50

标签: javascript arrays geolocation

我正尝试将用户的位置记录到一个数组中,以供以后使用。在尝试检查它是否正常工作时,我发现整个数组都将记录到控制台,但是如果我尝试仅记录数组中的一个元素,则会出现错误。想知道是否有人可以帮助我理解原因。

Javascript在下面

window.onload = function getLocation() {
    var userlocation = [];
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
      x.innerHTML = "Geolocation is not supported by this browser.";
    }


  function showPosition(position) {
    userlatitude = position.coords.latitude;
    userlongitude = position.coords.longitude;
    userlocation.push(userlatitude);
    userlocation.push(userlongitude);
  }

    console.log(userlocation[0]);
    console.log(userlocation);
}

我希望console.log(userlocation [0])输出用户纬度,但它会以未定义的形式出现。

1 个答案:

答案 0 :(得分:0)

navigator.geolocation.getCurrentPosition是异步的。在执行控制台语句时,尚未填充该数组。看起来好像整个数组都记录在控制台中的原因是,您的浏览器的开发工具正在显示指向数组对象的指针,而不是在控制台声明时显示数组的内容。

如果要确保您拥有getCurrentPosition函数提供的值,则应将依赖于它们的代码放在成功回调中:

window.onload = function getLocation() {
    var userlocation = [];
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
      x.innerHTML = "Geolocation is not supported by this browser.";
    }


  function showPosition(position) {
    userlatitude = position.coords.latitude;
    userlongitude = position.coords.longitude;
    userlocation.push(userlatitude);
    userlocation.push(userlongitude);

    console.log(userlocation[0]);
    console.log(userlocation);
  }
}