在计算地理位置时无法设置外部(全局?)变量

时间:2016-09-28 13:58:11

标签: javascript asynchronous geolocation

这是我的代码:

var lat;

$(document).ready(function() {
    navigator.geolocation.getCurrentPosition(function(position) {
        lat = position.coords.latitude;
        console.log("inside", lat);
    });

    console.log("outside", lat);
});

当我运行它时(参见jsfiddle),控制台会显示:

  

外部未定义
  在55.8509728内。

不确定是否重要,但我注意到"外面"值始终首先显示,即使它在"内部"之后。在代码中。

有人可以如此友好地解释为什么我无法获得(或可能设置?)lat变量?

1 个答案:

答案 0 :(得分:0)

navigator.geolocation.getCurrentPosition是一个异步函数,它只调用函数,因此在检索到位置后运行“内部”代码。这就是为什么你首先看到“外部”消息(此时lat确实未定义)然后是内部消息。

如果您需要访问lat的值,则需要等到它被定义,例如通过从getCurrentPosition回调中调用另一个函数。