我无法理解为什么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);
答案 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
}