2016-06-01 30 views
0

Ich bin neu in Javascript und spielte mit einfachen Code, aber wenn ich dies unten angegebenen Code in Firebug schrieb, bekam ich den unerwarteten Wert. Hier ist der CodeFirebug's console.log druckt unerwarteten Wert mit javaScript

var a=5; 
    while(a<10000){ 
     if(a%1000==0) 
     console.log(a); 
     a++; 
    } 

Und dies war die Ausgabe in der Konsole

var a=5; while(a<10000){ if(a%1000==0)  console.log(a); a++; } 
    1000 
    2000 
    3000 
    4000 
    5000 
    6000 
    7000 
    8000 
    9000 
    9999 

Am Ende gab es mir die „9999“, die es nicht gedruckt hat, soll nach der Logik.
Während, ersetzte ich die console.log von alert, erhielt ich die genaue Ausgabe.
Ich fühle es ist einfach, aber ich habe noch nie Feuerbug verwendet und ich war ein wenig neugierig, warum das passiert ist?

Antwort

3

Ihr Problem ist, dass Firebug immer den Rückgabewert der letzten Anweisung druckt. Wenn Sie Ihre Erklärung dazu ändern:

var a=5; while(a<10000){ if(a%1000==0)  console.log(a); a++; };null; 

werden Sie null statt 9999 bekommen. Die 9999 ist der Rückgabewert der letzten a++. Dies ist nur dann der Fall, wenn Sie Ihren Code in der Konsole eingeben, und Sie können einfach eine Variable eingeben und die Variable drucken.

+2

Ich habe [Dokumentation zur Dokumentation] (https://getfirebug.com/wiki/index.php/Console_Panel#Command_Line) hinzugefügt, um dies zu verdeutlichen. –

+1

Der Chrome-Debugger hat ein ähnliches Verhalten. – Lux

+2

Eigentlich tun alle Browser Devtools dies. –

2

Die Konsole kann den letzten Wert drucken, der nicht in console.log verwendet wird.

9999 ist kein output aber der letzte Wert von a

Das gleiche Verhalten, das Sie in Chrome-console beobachten wird. Der letzte gedruckte Wert ist der für die letzte Anweisung interpretierte Wert.

+0

FWIW, auch die Konsole in den Firefox DevTools tut dies. –

Verwandte Themen