2013-05-10 4 views
10

Ich habe den folgenden Code:console.log (Array) zeigt verschiedene Array-Inhalt als das Array iterieren und Anzeigen der einzelnen Elemente

console.log("start"); 
for(var i = 0; i < array.length; i++){ 
    console.log(i + " = " + array[i]); 
} 
console.log(array); 
console.log("end"); 

Das gibt mir die folgende Ausgabe:

[16:34:41.171] start 
[16:34:41.171] 0 = 0 
[16:34:41.172] 1 = 168 
[16:34:41.172] 2 = 171 
[16:34:41.172] [0, 168, 171, 139] 
[16:34:41.172] end 

That Es zeigt das Element 139 beim Iterieren des Arrays nicht an, es wird jedoch bei der Ausgabe des gesamten Arrays in der Datei console.log gedruckt. WARUM? (< - die Frage)

Ich modifiziere das Array später, ist das console.log irgendwie verzögert, bis ich das Array geändert habe? Beachten Sie, dass sich die Reihenfolge der Anweisungen ändert und consoel.log(array) direkt am Anfang ändert das Ergebnis nicht (noch andere Ausgaben).

Ich bin mit Firefox 20.0

+2

Wie/wo ist Ihr Array definiert? Ich sehe nicht, was Sie sind: http://jsfiddle.net/j08691/vJd6x/ – j08691

+1

mögliche Duplikate von [JavaScript: console.log() gibt andere Ergebnisse als alert()] (http://stackoverflow.com/ Fragen/15528322/javascript-console-log-gibt-different-results-than-alert) –

+0

Ist das Array eine Objekteigenschaft? http://stackoverflow.com/questions/8249136/why-does-javascript-object-show-different-values-in-console-in-chrome-firefox/8249333#8249333 –

Antwort

14

Update: Wenn Sie dieses Verhalten sehen möchten, kopieren Sie den Code in der Konsole und führen einfügen. Dann schließe die Entwicklerwerkzeuge und öffne sie wieder, anscheinend geschieht das Zeiger-Ding nur, wenn der Code im Hintergrund ausgeführt wird (was passiert, wenn du die Konsole wieder öffnest).

Console.log Ausgabe von Objekten, ist ein Zeiger, kein realer Wert. Dies bedeutet, dass das Objekt console.log aktualisiert wird, wenn sich das Objekt später ändert. Versuchen:

console.log("start"); 
var array = [1]; 
for(var i = 0; i < array.length; i++){ 
    console.log(i + " = " + array[i]); 
} 
console.log(array); 
console.log("end"); 
array.push(9999);// you will see the 9999 in the console no matter it was added after the output. 

Um Zeiger Probleme versuchen, dies zu verhindern: console.log (Array.join()); denn später fügen Sie in irgendeinem Punkt Ihrer Anwendung den Wert 139 hinzu.

Verwandte Themen