请给我一些线索,这个JavaScript问题。 我有一个全局变量标记。并尝试将每个标记推向标记。 但问题是,推到标记后。我试图提醒内部函数和外部函数的值。结果是完全不同的。函数中的标记给我一些标记,但外面的标记保持空白。为什么我有不同的标记全局变量值?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);
感谢您的热心帮助或线索。
里面你的问题,你声明函数内部的警告是“标志”和外面的功能在“标记”上。也许有些打字错误? 此外,它也有助于共享其他代码。我看不出什么时候警报会被触发,这是知道这里至关重要的事情。紧接在for循环之后触发警报吗?然后这些标记确实是空的,因为当延迟的函数执行时它将被填充。 – rmoorman
@rmoorman,yap我犯了一些输入错误。我在片段中添加了一些行。控制台结果和警报是不同的。 – syant
然后它是由事实引起的,即标记将在稍后填充(由于setTimeout)。你的编辑也清楚了。你可以通过用类似 的setTimeout(function(){console.log(markers);},netotal * 50)替换alert来确认。 – rmoorman