Bei jeder console.log
Ausführung wird eine Zeile mit der Aufschrift undefined
an das Ausgabeprotokoll angehängt.
Dies geschieht sowohl in Firefox als auch in Chrome unter Windows und Linux.
Bei jeder console.log
Ausführung wird eine Zeile mit der Aufschrift undefined
an das Ausgabeprotokoll angehängt.
Dies geschieht sowohl in Firefox als auch in Chrome unter Windows und Linux.
console.log()
kehrt zurück undefined
.
Antworten:
Wenn Sie mit console.log()
einer JS-Datei arbeiten, sollte diese undefined
Zeile nicht angehängt werden.
Wenn Sie console.log()
von der Konsole aus laufen , ist dies sinnvoll. Dies ist der Grund: In der Konsole können Sie einen Namen für eine Variable eingeben (z. B. versuchen Sie es mit der Eingabe window
), und es werden Informationen darüber gedruckt. Wenn Sie eine void-Funktion (wie console.log) über die Konsole ausführen, werden undefined
in diesem Fall auch Informationen zum Rückgabewert ausgedruckt .
Ich habe beide Fälle auf meinem Chrome (Mac Version 23.0.1271.101) getestet und sehe die undefined
Zeile tatsächlich , wenn ich sie in der Konsole ausführe. Dies undefined
erscheint auch, wenn ich diese Zeile in die Konsole schreibe:var bla = "sdfdfs"
Obwohl die Antwort von talkol in Ordnung ist, versuche ich es klarer auszudrücken:
JavaScript ist als dynamische Sprache konzipiert, was bedeutet, dass der Typ (Zeichenfolge, Leere, Boolescher Wert…) eines Funktionsrückgabewerts nicht vordefiniert ist. Wenn eine Funktion keine return-Anweisung oder eine leere return-Anweisung ohne Wert verwendet, gibt JavaScript automatisch undefiniert zurück. Das bedeutet, dass in JavaScript jede Funktion etwas zurückgibt, zumindest undefiniert.
Daher verwendet die Funktion console.log()
in der Chrome-Konsole entweder no oder eine leere return-Anweisung, sodass der Rückgabewert dieser Funktion nicht definiert ist. Dieser Funktionsrückgabewert wird auch in der Chrome-Konsole angezeigt.
[Wenn jemand weiß, wo die Definition der console.log()
Funktion im Google Chrome-Quellcode zu finden ist, kommentieren Sie dies bitte mit dem Link. Dann können wir sogar noch weiter gehen und uns den tatsächlichen Code ansehen. Das wäre schön.]
Quellen:
Folgen Sie dem Bild, um dieses Problem zu lösen:
Ctrl + Shift + J
Die Konsolenumgebung in Ihrem Browser verwendet den allerletzten Anweisungsausdruck in einem Programm, wertet ihn auf einen Wert aus und zeigt Ihnen diesen Wert an.
Das Ergebnis eines Zuweisungsausdrucks ist der zugewiesene Wert. Die JavaScript-Engine führt also nur eine Zuweisung aus, aber die Konsole führt einen zusätzlichen Schritt aus, bei dem festgelegt wird, was auch immer meine letzte Anweisung ist. Geben Sie diesen Wert zurück. Deshalb wird 2 gedruckt:
In Anweisungen, die keinen Rückgabewert haben, erhalten Sie so etwas wie undefiniert.
a=2
return 2 und var b=2
nichts zurück? (Ich denke, weil =
ein Operator einen Wert zurückgibt, aber warum macht er das nicht auch in der Deklarationsanweisung?)
Was Sie tun können, ist einfach eine eigene console.log-ähnliche Funktion zu erstellen, mit der Sie dieses Verhalten ändern können, wenn Sie viel in der Entwicklerkonsole codieren. Hier ist ein Beispiel dafür, wie das in der Entwicklerkonsole aussieht:
console.log('I hate seeing the next line stating the obvious.')
I hate seeing the next line stating the obvious.
undefined
log = function(l){return l}
function log()
if(1 === 2){console.log('1 is not equal to 2.')}else{log('No Shit Sherlock.')}
"No Shit Sherlock."
undefined
ist der Rückgabewert von console.log () in Chrome-Entwicklertools. Sie werden undefiniert, wenn Sie in den Chrome-Entwicklertools die folgenden Schritte ausführen, und Sie werden feststellen, dass Sie undefiniert werden, obwohl x den Wert 3 hat.
> let x = 3
> undefined