Javascript 召回可变问题(涉及地理位置)
我不明白为什么console.loglatitude在if语句之外不工作。我可以在控制台中回忆latitude,因此它的值正在更新。我猜console.loglatitude是在latitude的值更改之前运行的,但是到目前为止,我确保if语句首先完成的解决方案没有起作用。我也试过了。非常感谢您的帮助!我希望我没有忽略一些非常简单的事情Javascript 召回可变问题(涉及地理位置),javascript,var,Javascript,Var,我不明白为什么console.loglatitude在if语句之外不工作。我可以在控制台中回忆latitude,因此它的值正在更新。我猜console.loglatitude是在latitude的值更改之前运行的,但是到目前为止,我确保if语句首先完成的解决方案没有起作用。我也试过了。非常感谢您的帮助!我希望我没有忽略一些非常简单的事情 var latitude = "" ; var longitude = ""; if (navigator.geolocation) { navi
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
}
因为它是异步的。这就像点了一份外卖比萨饼,在比萨饼外,你打了个电话,然后试着吃。