回顾变量问题(涉及地理定位)

时间:2018-02-20 16:48:53

标签: javascript var

我无法理解为什么console.log(latitude)不在if语句之外工作。我可以在控制台中回忆latitude,以便更新其值。我的猜测是console.log(latitude)latitude's值更改之前运行,但我确保if语句到目前为止完成的解决方案无效。我也尝试过调试器。任何帮助深表感谢! (我希望我没有忽略一些非常简单的事情!)

var latitude = "" ;
var longitude = "";

  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      latitude = position.coords.latitude;
      longitude = position.coords.longitude;
      place.textContent = ("latitude: " + latitude + "  longitude: " + longitude);
    });
  }

  console.log(latitude);

1 个答案:

答案 0 :(得分:1)

回调是异步的。因此latitude的console.log会返回undefined。如果您想在计算后(在回调中)访问latitude,那么您需要以不同方式执行代码片段。类似的东西:

navigator.geolocation.getCurrentPosition(function(position) {
      latitude = position.coords.latitude;
      longitude = position.coords.longitude;
      place.textContent = ("latitude: " + latitude + "  longitude: " + longitude);
      fn(latitude,longitude)
    });

然后您可以在fn函数中获取最后一个计算值:

fn(latitude,longitude) => {
   //use the logic here
}