请给我一些有关此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);


感谢您的帮助或提示。

最佳答案

您要在使用markers调用的函数中将其推送到setTimeout,因此直到一段时间后才进行推送。但是,在发生任何超时之前,您将立即呼叫alert(markers)。因此,该数组当时为空。

更新:

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

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

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

10-09 17:51