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.
javascript
debugging
logging
console
N. Chamaa
quelle
quelle
console.log()
kehrt zurückundefined
.Antworten:
Wenn Sie mit
console.log()
einer JS-Datei arbeiten, sollte dieseundefined
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 Eingabewindow
), und es werden Informationen darüber gedruckt. Wenn Sie eine void-Funktion (wie console.log) über die Konsole ausführen, werdenundefined
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. Diesundefined
erscheint auch, wenn ich diese Zeile in die Konsole schreibe:var bla = "sdfdfs"
quelle
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:
quelle
Folgen Sie dem Bild, um dieses Problem zu lösen:
quelle
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.
quelle
a=2
return 2 undvar 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."
quelle
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
quelle
Wenn Sie
console.log
mehrere Werte in einer Zeile ausgeben, ist hier eine hackige Alternative:var1 + ' ' + var2 + ' ' + var...
(Bessere Ideen sind willkommen, dies kann unter bestimmten Umständen explodieren.)
quelle