Sehen Sie sich den folgenden Code an:
Beantworten Sie die folgenden Fragen:
Wird ein Fehler gemeldet? Wie oft wird es auftauchen?
Ist die zweite Warnung wahr oder falsch?
Was erscheint in der dritten Warnung?
Warum?
Denken Sie darüber nach und testen Sie es dann. Wenn Sie die Frage richtig beantworten, müssen Sie die folgenden Artikel nicht lesen.
---------
Es ist zu einfach, Variablen in JS zu definieren. Verwenden Sie einfach var oder sogar ohne var:
Firebug hat direkt einen Fehler gemeldet: a ist nicht definiert. Dies bedeutet, dass a nicht definiert ist. In Kombination mit dem vorherigen Code ist dies verwirrend. Was ist der Unterschied zwischen diesem Undefinierten und dem vorherigen Undefinierten?
Tatsächlich entspricht der vorherige Code diesem:
In der folgenden direkten Warnung erscheint die Variable nie, was bedeutet, dass diese wirklich undefiniert ist.
Um es einfach auszudrücken: Es gibt in JS keine Variable ohne Wert, der Variablen wird bei der Deklaration ein Wert zugewiesen.
Dann schauen wir uns den folgenden Code an:
Auf diese Weise wurde jedoch kein Fehler gemeldet, sondern ein undefinierter Wert angezeigt. Es zeigt, dass die Variable a bereits existiert, aber der Wert ist nicht das, was wir wollen, sondern undefiniert. Welches Problem ist das?
Da die Variablendeklaration mit der Variablendeklaration identisch ist, wird sie erweitert. Tatsächlich sieht der obige Code wie folgt aus:
Der Schlüssel zu diesem Problem ist also: Die var-Anweisung wird an die Spitze des Gültigkeitsbereichs vorrücken, der angehängte Wert jedoch nicht – eine sehr verwirrende Einstellung, ich weiß nicht, warum sie auf diese Weise gemacht wird. Persönlich denke ich, dass dies ein Fehler von JS ist.
Heutzutage gibt es eine Codierungsgewohnheit, die dafür plädiert, Variablendeklarationen an den Anfang des Bereichs zu stellen. Dies liegt wahrscheinlich daran – selbst wenn Sie es nicht an den Anfang schreiben, wird JS an den Anfang gestellt Vorauszahlung.
Veröffentlichen Sie nun die Antwort auf die Frage am Anfang des Artikels:
Es werden nur zwei Warnungen angezeigt, und die Warnung im if wird nicht ausgeführt. Aufgrund des Vorabcharakters der var-Deklaration sieht der eigentliche Code so aus:
Obwohl aa leer ist, ist es wahr, wenn es anhand von „aa“ im Fenster beurteilt wird, da a existiert und der Wert undefiniert ist. Der if-Code wird also nicht ausgeführt. Auf die letzten beiden Warnungen werde ich nicht eingehen.
Ich persönlich halte das für eine sehr unsinnige Frage. Wir sollten seine Gründe verstehen, aber seine Falle verachten.
Die obige Frage ist auch der Grund, warum ich diesen Artikel in einem Online-Artikel geschrieben habe, aber es gibt keine Antwort darauf, also bin ich zu Stackoverflow gegangen, um nachzufragen aus. Die Antwort ist dieser Artikel.
Aber das ist eigentlich eine sehr grundlegende Frage! ! !
Haha, verzeih mir, später kommt noch eine Frage: