【问题标题】:How to access a global variable in a closure? (Javascript)如何访问闭包中的全局变量? (Javascript)
【发布时间】:2011-10-20 04:23:37
【问题描述】:
            var events = <?php echo $sf_data->getRaw('jsonData'); ?>;//some perfecly fine json
            var locations = new Array();
            var geocoder = new google.maps.Geocoder();
            $(events).each(function(i,e){
                geocoder.geocode({address: e.place},function(results,statusCode){
                    locations[e.id] = results[0].geometry.location;
                })
            })
            alert(locations.length);

好的,这个问题很简单。 如何修改闭包内的 locations 数组? 警报显示 0

【问题讨论】:

  • 您可以按照自己的方式访问它。但是,我没有看到您在 each() 之前定义 events。我认为我们需要更多代码...
  • 使用 firebug 的 console.log 更适合调试。

标签: javascript closures scope


【解决方案1】:

警报显示为 0,因为您异步修改了 locations稍后将调用您修改 locations 的匿名函数,然后您会显示警报。

【讨论】:

  • geocoder.geocode() 是异步的吗?如果没有,我在这个发布的示例中看不到异步代码。 (我对 Google Maps API 一无所知)
  • 哇,啪。我忘了它是异步的。我想这可以解决问题,谢谢
猜你喜欢
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
相关资源
最近更新 更多