Wert
Manchmal frage ich mich, wie die JavaScript-Parsing-Engine den Wert einer Variablen, wie zum Beispiel des folgenden Codes, unterscheidet.
var x = 'javascript'; //javascript x = "hello"; // hello x = 555; //555 x = null; //null x = a; //a is not defined x = true; //true
wird direkt Zahlen zugeordnet, da es keine Vielfalt gibt, Zahlen sind Zahlen. Es ist jedoch schwierig zu unterscheiden, ob der Wert auf Englisch vorliegt, da es sich bei Englisch in einer Programmiersprache möglicherweise um eine Zeichenfolge oder eine andere Variable handelt, auf die verwiesen wird. Daher ist die Unterscheidung von Variablen und Zeichenfolgen besonders wichtig. In Programmiersprachen werden Zeichenfolgen häufig in Anführungszeichen gesetzt, um Variablen und Zeichenfolgen zu unterscheiden. Einige Sprachen, wie zum Beispiel Java, unterscheiden auch zwischen einfachen und doppelten Anführungszeichen, die ein Zeichen einschließen, während doppelte Anführungszeichen eine Zeichenfolge einschließen. JavaScript unterscheidet jedoch nicht zwischen Zeichen und Zeichenfolgen, sondern behandelt beide als Zeichenfolgen, sodass es in JavaScript keinen Unterschied zwischen einfachen und doppelten Anführungszeichen gibt.
Obwohl Anführungszeichen zur Unterscheidung von Variablen und Zeichenfolgen verwendet werden können, kann der Wert auch ein Schlüsselwort sein. Im obigen Code habe ich x beispielsweise null zugewiesen. Wie unterscheiden diese Programmiersprachen also? Variablen und Strings? Was ist mit Schlüsselwörtern?
null = 123; console.log(null); //Uncaught ReferenceError: Invalid left-hand side in assignment undefined = 456; console.log(undefined); //undefined
Oben habe ich jeweils einem anderen Wert null und undefiniert zugewiesen. Infolgedessen wurde beim Zuweisen eines Werts zu null ein Fehler gemeldet, aber kein Fehler wurde beim Zuweisen eines Werts zu undefiniert gemeldet, jedoch ebenfalls ohne Erfolg. Vielleicht sind das für null und undefiniert die Werte. Variablen suchen nach Werten. Wenn wir darüber sprechen, wie JavaScript Variablen und Schlüsselwörter unterscheidet, kann es sein, dass es irgendwann darum geht, wie JavaScript Variablen und Werte unterscheidet.
Semikolon
In einigen JS-Plug-Ins sehen Sie oft eine Codezeile wie die folgende
;(function(){ ......... })();
Am Anfang des Codes steht ein Semikolon. Wofür wird dieses Semikolon also verwendet?
Wir wissen, dass ein Semikolon das Ende eines Codeabschnitts darstellt, aber das Problem besteht darin, dass Sie in JavaScript kein Semikolon schreiben können, sodass ein Problem entsteht. Das Ende des Codes wird nicht von Ihnen entschieden Es wird vom Programm entschieden, und das Programm ist nicht allmächtig. Wenn der Code, den Sie schreiben, nicht den Regeln entspricht, ist das Endergebnis etwas unbefriedigend.
Im Folgenden finden Sie JavaScript-Parsing-Regeln zum Weglassen von Semikolons
var a = 1 + 2 console.log(a) //3
Der JavaScript-Parser analysiert den obigen Code in
var a = 1 + 2; console.log(a); //3
Wenn Javascript nach 2 kein Semikolon hinzufügt, kann es nicht analysiert werden. Es kann auch gesagt werden, dass der Javascript-Parser nicht analysiert werden kann wird es versuchen. Es fügt ein Semikolon hinzu und meldet einen Fehler, wenn es immer noch nicht analysiert werden kann. Ein weiteres Beispiel ist der folgende Code
var a = 10; var b = 5; var c = a + b (a + b).toString() // b is not a function
. Er besagt, dass b keine Funktion ist, was bedeutet, dass der obige Code wahrscheinlich wie folgt analysiert wird Code Der Code
var a = 10; var b = 5; var c = a + b(a + b).toString();
behandelt () als Funktionsaufruf. Es versteht sich auch, dass der JavaScript-Parser so viele Übereinstimmungen wie möglich abgleicht. Es gibt jedoch einige Ausnahmen: „Rerun“, „Break“ und „Fortfahren“. Wenn der JavaScript-Parser diese Schlüsselwörter analysiert, ändert er den Inhalt nach Zeilenumbrüchen nicht . Behandeln Sie es als sein eigenes, aber fügen Sie direkt vor dem Zeilenumbruch ein Semikolon hinzu. Sehen Sie sich den folgenden Code an:
function test(){ return 123; } console.log(test()); //undefined
Er gibt nicht 123 zurück , noch Das heißt, es fügt direkt nach dem erneuten Ausführen ein Semikolon hinzu.
Warum fügen diese Plug-in-Entwickler im Nachhinein ein Semikolon in die erste Codezeile ein?
Da es sich um ein Plug-in handelt, steht es natürlich auch anderen zur Verfügung, oder? Aber das Hauptproblem besteht darin, dass Sie nicht wissen, wie der Code von den Leuten geschrieben wird, die dieses Plug-in verwenden. Das scheint ein ziemlicher Trugschluss zu sein. Was haben wir miteinander zu tun?
Wenn der Code des Benutzers unseren Code beeinflusst, wie wirkt er sich dann darauf aus? Zum Beispiel schreiben wir einen Code ähnlich dem folgenden
<script src="test.js"></script> <script src="zmz.js"></script>
Das erste Skript wird vom Benutzer selbst geschrieben, das zweite Skript durch ein bestimmtes Plug-in eingeführt, wie analysiert der Browser diese beiden Skripte? Testen wir es
test.js
var a a
zmz.js
(1+2)
Wenn Sie es ausführen, werden Sie feststellen, dass kein Fehler gemeldet wird, was bedeutet, dass das Javascript Parser nicht Da die vorherige Datei kein Semikolon enthält, wird sie nicht zusammen mit dem Code in der letzteren Datei analysiert.
Das Problem liegt nicht hier, aber vielleicht haben Sie gerade ein Buch über HTTP gelesen, wow, es stellt sich heraus, dass das Zusammenführen von Dateien die Anzahl der Anfragen reduzieren kann, sodass die beiden Skripte in eines integriert werden. Es hat sich in etwa so verwandelt:
var a a(1+2)
Glauben Sie, dass dies ohne Fehler möglich ist? , so etwas Es ist unmöglich zu erscheinen.
var a a;(1+2)
Stellen Sie sich also nicht vor, dass das Semikolon nur zum Beenden eines bestimmten Codeabschnitts verwendet wird, es kann auch zum Isolieren eines bestimmten Codeabschnitts verwendet werden Stück Code und ziehen Sie eine Grenze zwischen anderen.
Weitere Artikel zu den bescheidenen Grundlagen von Javascript, Werten und Semikolons finden Sie auf der chinesischen PHP-Website!