Javascript全局变量仅在匿名函数内更新

标签 javascript google-maps-api-3

请给我一些关于这个 javascript 问题的线索。 我有一个全局变量标记。并尝试将每个标记推向标记。 但问题是,在推到标记之后。我试图提醒函数内部和函数外部的值。结果完全不同。函数内部的标记为我提供了标记数组,但外部的标记保持为空。为什么我的标记全局变量的值不同?

这是我的代码片段:

for (var i = 0; i < netotal; i++) {
    setTimeout(function () {
        marker = new google.maps.Marker({
            position: pos[iterator],
            map: map,
            draggable: false,
            animation: google.maps.Animation.DROP,
            icon: neicon  
        });
        iterator++;
        markers.push(marker);console.log(markers);
    }, i * 50);  
}

alert (markers);

感谢您的帮助或线索。

最佳答案

您正在使用 setTimeout 调用的函数中推送到标记,因此推送要在一段时间后才会发生。但在发生任何超时之前,您会立即调用 alert(markers)。所以此时数组为空。

更新:

要查看标记的最终内容,您需要另一个setTimeout:

setTimeout(function() { alert(markers); }, netotal*50);

关于Javascript全局变量仅在匿名函数内更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13063771/

相关文章:

javascript - Redux 中的 Actions 和 Reducers 有什么意义?

javascript - 重定向页面但保留原始页面缓存以返回

javascript - angular-google-maps 标记和 $scope.$apply();错误

javascript - 仅获取国家以从 Google Maps API 自动完成

javascript - OverlayView 顶部的标记,GoogleMaps API V3 JavaScript

javascript - 定义按 Enter 键时的默认按钮

javascript - React 中的 HTML5 音频标签

javascript - C3js 在加载时更改轴时间格式

javascript - 去抖谷歌地图自动完成

google-maps - 谷歌地图地理编码 API 许可证?