gpt4 book ai didi

javascript - javascript 中的变量作用域

转载 作者:行者123 更新时间:2023-12-03 22:48:26 24 4
gpt4 key购买 nike

这是一个简单的问题,但我做不出来。

细节并不重要,但这是要点。我有一些这样的代码:

var lat = 0;
var lon = 0;

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
});
}

我认为它正在做的是:

  1. 将纬度和经度设置为 0
  2. 如果浏览器有地理定位,用实际值覆盖那些变量

但是,在该 block 的末尾,lat 和 lon 仍然为 0。我尝试添加 var,将 lat 和 lon 传递给函数等,但没有成功...

我如何使它工作?

最佳答案

这是一个异步回调。基本上,您将一个函数传递给导航器 API。然后,您的代码继续(并执行任何操作)。稍后,导航器 API 使用答案(位置)调用您的回调。因此,任何使用位置的东西都必须在回调内部(包括被调用)。

另见 this previous answer ,它展示了如何创建和使用包装器函数。

编辑:您可以简单地编写一个函数来调用您的回调。如果需要,getLocation 可以将另一个标志传递给它的参数(例如失败/成功代码)。

function getLocation(callback)
{
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(callback);
}
else {
callback(null);
}
}

然后:

getLocation(function(pos)
{
//do stuff
if(pos != null)
{
// loc stuff
}
// more stuff
});

您不必使用匿名函数。

关于javascript - javascript 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2965727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com