javascript - 在javascript中从内部范围设置外部范围变量

标签 javascript jquery

var lat = 0.0;
var lng = 0.0;
var jsonData = null;
var geocoder = new google.maps.Geocoder();
var miles = $('#milesAway').val();

// find what the user is locating by
if ($('#zipCode').is(':visible'))
{
    var zipText = $('#zipCode').val();
    if (isValidUSZip(zipText))
    {
        geocoder.geocode( {
            'address': zipText
        }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                lat = results[0].geometry.location.lat();
                lng = results[0].geometry.location.lng();
                map.setCenter(results[0].geometry.location);
            } else {
                alert("Zip Code couldn't be located.");
            }
        });
    }
    else
    {
        alert('Please enter a valid US zip code.');
    }
}

这东西跑完后,lat和lng还是设置为0.0,为什么呢?我不能像这样设置这些吗?

编辑:我也到了应该设置它们的地步,如果我在那里发出警报,我可以看到它们应该设置的值。

最佳答案

geocoder.geocode 回调不会立即运行,它会延迟到 AJAX 调用返回。作用域没有问题,只是在 XHR 完成之前变量不会更改。

如果您依赖于它们被更改,请尝试将您的依赖代码(或对函数的调用)放入地理编码器回调函数中。

关于javascript - 在javascript中从内部范围设置外部范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587708/

相关文章:

javascript - onClick 事件不会在 iOS 中触发 Instagram 在 App 浏览器中 Meteor React JS Web App

javascript - 可视化多个数据集

javascript - 如何将href标签之间的url发送到外部表单?

javascript - 使用javascript在android chrome浏览器上打开前置摄像头

javascript - 如何使用 jQuery 或简单的 js 调用简单的 WCF 服务

javascript - 在背景图像中使用正则表达式获取 div

javascript - React.JS : Sequence of timed state changes

javascript - Jquery 移动到其他 div(动画)

javascript - 处理 iOS 虚拟键盘 “previous” , “next” , “Go/Enter” 按钮

c# - 在 asp.net MVC 中调用 AJAX 后呈现 View