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

时间:2012-10-25 07:37:26

标签: 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);

感谢您的帮助或线索。

2 个答案:

答案 0 :(得分:1)

取决于范围,使用window.markers来访问全局标记。

答案 1 :(得分:1)

你在使用markers调用的函数中推送setTimeout,因此推迟直到一段时间后才会发生。但是,在发生任何超时之前,您立即呼叫alert(markers)。所以当时阵列是空的。

更新:

要查看markers的最终内容,您需要另一个setTimeout

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