地理定位功能中的 JavaScript 变量范围
Posted
技术标签:
【中文标题】地理定位功能中的 JavaScript 变量范围【英文标题】:JavaScript variable scope in geolocation function 【发布时间】:2012-02-03 00:36:10 【问题描述】:我正在尝试使用 javascript 来获取用户的地理位置,这样我就可以将该信息用作另一部分 javascript 代码中的参数,但是我无法获得正确的范围。
这是我的代码。在成功函数内执行警报工作正常,但如果我尝试在函数外的任何地方访问 var lat,我会得到未定义的值。我将如何解决这个问题?
var lat; var long;
function success(position)
lat = position.coords.latitude;
long = position.coords.longitude;
alert(lat);
function error(msg)
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(success, error);
else
error('not supported');
【问题讨论】:
欢迎来到 async 的精彩世界!你不能那样做。 我没有看到您在success()
之外尝试引用 lat
的位置。
@gilly3 - 我在 if else 语句之后有它,然后将它移到了成功函数中。它仅适用于成功函数。我想我正在寻找某种方法来等待返回值,然后再尝试访问它
【参考方案1】:
您希望您的代码像这样工作:
navigator.geolocation.getCurrentPosition(success, error);
alert("Your position is " + lat + ", " + long + ".");
// do some more stuff with lat and long
但是,success()
还没有被调用,所以 lat
仍然是未定义的。 这就是您的成功处理程序的用途。在您检索到位置后需要执行的所有代码都在成功处理程序中。这会起作用:
navigator.geolocation.getCurrentPosition(function (position)
success(position);
alert("Your position is " + lat + ", " + long + ".");
// do some more stuff with lat and long
, error);
【讨论】:
以上是关于地理定位功能中的 JavaScript 变量范围的主要内容,如果未能解决你的问题,请参考以下文章