显式赋值后Javascript中的变量未定义?

时间:2015-10-25 00:43:30

标签: javascript variables closures

由于某些原因,当我对其发出警报时,我的“initialLocation”变量是未定义的,即使我在getCurrentPosition的回调函数中明确指定它。 变量“initialLocation”全局声明为btw。

也许我不理解这种封闭概念?

var initialLocation;

if (navigator.geolocation) {
    geoLocationError = true;
    navigator.geolocation.getCurrentPosition(function(position) {
        initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        getFood();
        }, geoError);
    alert(initialLocation);
} else {
    geoLocationError = false;
    noGeolocation(geoLocationError);
}

1 个答案:

答案 0 :(得分:1)

navigator.geolocation.getCurrentPosition是异步的,因此在initialLocation设置之前您的警报就会触发。您应该在设置initialLocation之后将警报置于回调中。