【问题标题】:JavaScript variable scope in geolocation function地理定位功能中的 JavaScript 变量范围
【发布时间】: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 语句之后有它,然后将它移到了成功函数中。它仅适用于成功函数。我想我正在寻找某种方法来等待返回值,然后再尝试访问它

标签: javascript scope


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2021-01-21
    • 2015-09-30
    • 2011-12-19
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多