請給我一些線索,這個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