Javascript 召回可变问题(涉及地理位置)

Javascript 召回可变问题(涉及地理位置),javascript,var,Javascript,Var,我不明白为什么console.loglatitude在if语句之外不工作。我可以在控制台中回忆latitude,因此它的值正在更新。我猜console.loglatitude是在latitude的值更改之前运行的,但是到目前为止,我确保if语句首先完成的解决方案没有起作用。我也试过了。非常感谢您的帮助!我希望我没有忽略一些非常简单的事情 var latitude = "" ; var longitude = ""; if (navigator.geolocation) { navi

我不明白为什么console.loglatitude在if语句之外不工作。我可以在控制台中回忆latitude,因此它的值正在更新。我猜console.loglatitude是在latitude的值更改之前运行的,但是到目前为止,我确保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);

回调是异步的。因此,纬度的console.log将返回未定义的值。如果您想在回调中进行计算后访问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
}

因为它是异步的。这就像点了一份外卖比萨饼,在比萨饼外,你打了个电话,然后试着吃。