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