Die lexikalische Struktur einer Programmiersprache ist ein grundlegender Satz von Regeln, mit denen Sie beschreiben, wie Sie diese Sprache schreiben. Als Grundlage der Syntax gibt es an, wie Variablennamen aussehen, wie man Kommentare schreibt und wie man zwischen Aussagen unterscheidet. In diesem Abschnitt wird ein sehr kurzer Raum verwendet, um die lexikalische Struktur von JavaScript einzuführen.
1. Zeichensatz
Das JavaScript-Programm ist in Unicode-Zeichensets, einem Supersatz von ASCII und Latin-1, geschrieben und unterstützt fast alle Sprachen in der Region. ECMASScript3 verlangt, dass die Implementierung von JavaScript die Versionen von Unicode2, 1 und nachfolgende Versionen unterstützen muss, während ECMAScript5 die Implementierung von JavaScript für Unicode3 und nachfolgende Versionen unterstützen muss.
ich. Fallempfindlichkeit
JavaScript ist eine Fallsensitive Sprache, dh Schlüsselwörter, Variablen, Funktionsnamen und alle Ausdruckszeichen müssen konsequent gedeckt werden. Zum Beispiel muss das Schlüsselwort während der Weile geschrieben werden und kann nicht so geschrieben werden, wie oder während.
Es ist jedoch zu beachten, dass HTML nicht fallsempfindlich ist (obwohl XHTML anders ist) und es leicht zu verwirren ist, da es eng mit dem Client -JavaScript zusammenhängt. Zum Beispiel kann im von HTML festgelegten Verarbeitungsereignis das Onclick -Attribut als Onclick geschrieben werden, aber in JavaScript kann es als Onclick geschrieben werden.
II Räume, Linienbrüche und Formatkontroller
JavaScript ignoriert die Räume zwischen den Token im Programm. In den meisten Fällen ignoriert JavaScript auch Linienbrüche. Da im Code Spaces und Line -Pausen im Willen verwendet werden können, kann gleichzeitig eine ordentliche und konsistente Eindrücke verwendet werden, um einen einheitlichen Codierungsstil zu bilden, wodurch die Lesbarkeit des Codes verbessert wird.
JavaScript zusätzlich zur Identifizierung von Space -Zeichen (/u0020). JavaScript zeigt auch die folgenden Zeichen an, die Leerzeichen anzeigen: Horizontales Registerkartenzeichen (/U0009), vertikaler Registerkartenzeichen (/U000b), Seitenwahrnehmungszeichen (/u000c), nicht überbrochenes Whitespace-Zeichen (/u00a0), Endian-Tag (/Ufeff) und Zeichen in allen Zs-Kategorien in Unicod. JavaScript erkennt die folgenden Zeichen als Endzeichen: Zeilenunterbrechung (/u000a), Wagenrückgabesymbol (/U000D), Zeilenabscheider (/u2028) und Segmentabscheider (/u2029). Der Kutschenrücklaufcharakter und der Linienbrechercharakter werden in ein einzelnes Zeilenende -Charakter analysiert.
Das Unicode -Format steuert Zeichen (CF -Klasse) wie "Schreiben von Markierungen von rechts nach links" (/u200f) und "Schreiben von Markierungen von links nach rechts" (/u200e) steuert die visuelle Anzeige von Text. This is crucial for the correct display of some non-English texts, which can be used in javascript comments, string direct quantities and regular expression direct quantities, but cannot be used in identifiers (e.g. variable names), but there is an exception to zero-width connector (/u200D) and zero-width non-connector (/uFEFF) that can appear in identifiers but cannot be used as hand characters. Es wird auch oben erwähnt, dass das Byte Order Marke Format Control -Zeichen (/Ufeff) als Raum behandelt wird.
iii.unicode Escape -Sequenz
In einigen Computerhardware und Software kann der vollständige Satz von Unicode -Zeichen nicht angezeigt oder eingegeben werden. Um Programmierer mit alter Technologie zu unterstützen, definiert JavaScript eine spezielle Sequenz, die 6 ASCII-Zeichen verwendet, um einen internen Code von 16-Bit-Unicode darzustellen. Diese Unicode -Escape -Sequenzen werden von /u vorangestellt, gefolgt von hexadezimalen Ratten (angezeigt mit Zahlen und Groß- und Kleinbuchstaben AF). Dieses Schreiben von Unicode Escape kann in JavaScript -String -Direktmengen, regulären Ausdrücken und Kennungen (mit Ausnahme von Schlüsselwörtern) verwendet werden. Beispielsweise ist die Unicode -Flucht des Charakters é als /u00e9 geschrieben, und die folgenden zwei JavaScript -Saiten sind genau gleich.
"Café" === "CAF/U00E9" => TRUE
Das Schreiben von Unicode Escape kann in Kommentaren erscheinen, aber da JavaScript Kommentare ignoriert, werden sie nur als ASCII -Zeichen im Kontext behandelt und werden nicht von Unicode -Zeichen verfolgt.
IIII Standardisierung
Unicode ermöglicht das Codieren des gleichen Zeichens mit mehreren Methoden. Zum Beispiel kann das Zeichen É das Unicode -Zeichen /U00E9 verwenden, oder das gewöhnliche ASCII -Zeichen E kann verwendet werden, um einem Tonsymbol /U0301 zu folgen. In einem Texteditor sind die von diesen beiden Codierungen angezeigten Ergebnisse genau gleich, ihre binären Codierungsdarstellungen sind jedoch unterschiedlich und in Computern nicht gleich. Der Unicode -Standard definiert ein bevorzugtes Codeformat für Indexzeichen und bietet eine standardisierte Verarbeitungsmethode, um Text in ein zum Vergleich geeigneter Standardformat umzuwandeln, und standardisiert andere Darstellungen, Zeichenfolgen oder reguläre Ausdrücke nicht mehr.
2. Kommentare
JavaScript unterstützt zwei Kommentare. Der Text nach "//" am Ende der Zeile wird von JavaScript als Kommentare ignoriert.
Zusätzlich wird der Text zwischen / * und * / auch als Kommentare verwendet. Diese Art von Kommentar kann über Zeilen geschrieben werden, aber es gibt keine verschachtelten Kommentare.
// einzelne Zeilenkommentar
/*
*
*
*
*/
3. Direkte Menge
Die sogenannte direkte Menge (wörtlich) ist der Datenwert, der direkt im Programm verwendet wird. Die direkte Menge ist unten aufgeführt.
Die Codekopie lautet wie folgt:
12 // Zahlen
1.2 // Dezimal
"Hllo World" // String -Text
'hi' // eine andere Zeichenfolge
Richtig // Boolean
Falsch // Boolean
/JavaScript /GI // Regieausdruck direkte Menge (als Musteranpassung verwendet)
null // leer
Kapitel 3 erläutert ausführlich die direkte Menge an Zahlen und Zeichenfolgen. Die direkte Menge der regulären Ausdrücke wird in Kapitel 10 erläutert. Weitere Sozialausdrücke können direkt als Arrays oder Objekte geschrieben werden.
{x: 1, y: 2} // Objekt
[1,2,3,4,5] // Array
4. Identifikatoren und zurückhaltende Wörter
Ein Kennung ist ein Name. In JavaScript werden Kennungen verwendet, um Variablen und Funktionen zu benennen oder die Sprungposition in bestimmten Schleifenanweisungen im JavaScript -Code zu markieren. Die JavaScript -Kennung muss in Buchstaben sein. Das Unterstrich oder das Dollarschild beginnt. Die nachfolgenden Zeichen können Buchstaben sein. Nummer. Unterstrich- oder Dollar -Zeichen (Zahlen dürfen nicht als Initialen erscheinen, kann JavaScript die Identifikatoren leicht von Zahlen unterscheiden), und die folgenden sind rechtliche Kennungen
Die Codekopie lautet wie folgt:
my_variable_name
B13
_dummy
$ str
Für die Portabilität und das einfache Schreiben verwenden wir normalerweise nur ASCII -Buchstaben und Zahlen, um Kennungen zu schreiben. Anschließend ist zu beachten, dass JavaScript Buchstaben und Zahlen im gesamten Satz von Unicode -Zeichen in der Kennung erlaubt (von der Technologie zu ECMascript ermöglicht es der MN -Klasse, der MC -Klasse und der P -Klasse des Unicode -Zeichenmechanismus, nach dem ersten Charakter der Kennung zu erscheinen). Daher können Programmierer nicht englische Sprachen oder mathematische Symbole verwenden, um Kennungen zu schreiben.
Die Codekopie lautet wie folgt:
var sá = true;
var π = 3,14;
JavaScript nimmt einige Kennungen als Schlüsselwörter heraus, sodass Namen diese Schlüsselwörter nicht mehr als Kennungen im Programm verwenden können.
Die Codekopie lautet wie folgt:
brechen
Fall
fangen
Fahren Sie fort
Standard
Löschen löschen
Tun
anders
Endlich
für
Funktion
Wenn
In
Instanz
neu
Zurückkehren
schalten
Das
werfen
versuchen
Typof
var
Leere
Während
mit
JavaScript reservierte Wörter
Klasse const Enum Export
Export erweitert Import Super
Außerdem sind diese Schlüsselwörter im normalen JavaScript legal, sind jedoch im strengen Modus reserviert
Implements lassen private öffentliche Renditen -Schnittstellenpakete
geschütztes statisches
Im gleichen strengen Modus sind die folgenden Kennungen streng eingeschränkt, aber Variablennamen, Parameternamen und Funktionsnamen können nicht verwendet werden.
Argumente eval
Die spezifische Implementierung von JavaScript kann eindeutige globale Variablen und Funktionen definieren. Jeder spezifische JavaScript -Server (Client) -Server usw. verfügt über eine eigene globale Attributliste, die berücksichtigt werden muss. (Fensterobjekt, um die Liste der in Client Javascript definierten globalen Variablen und Funktionen zu verstehen)
5. Optionales Semikolon
Wie viele Programmiersprachen verwendet JavaScript Semikolons (;), um Aussagen zu trennen. Dies ist sehr wichtig, um die Lesbarkeit und Sauberkeit des Codes zu verbessern. Das Ende einer Aussage ohne Trennzeichen wird zum Beginn der nächsten Aussage und umgekehrt.
In JavaScript nimmt jede Anweisung eine Zeile auf, und das Semikolon zwischen den Aussagen kann normalerweise weggelassen werden (das Semikolon vor den Klammern des "}" am Ende des Programms kann ebenfalls weggelassen werden). Viele JavaScript -Programmierer (einschließlich der Code -Beispiele dieses Buches) verwenden Semikolons, um das Ende einer Aussage klar zu markieren, selbst wenn Semikolons nicht vollständig benötigt werden. Ein anderer Stil besteht darin, Semikolone zu weglassen, wenn sie weggelassen werden können, und nur Semikolonen verwenden, wenn sie verwendet werden müssen. Unabhängig vom Programmierstil gibt es mehrere Details, die auf JavaScript achten können.
Der folgende Code, das erste Semikolon, kann weggelassen werden
a = 3;
B = 4;
Wenn jedoch im folgenden Format geschrieben wird, kann das erste Semikolon nicht weggelassen werden.
a = 3; B = 4;
Es ist zu beachten, dass JavaScript keine Semikolonen in allen Neulinen füllt: JavaScript füllt Semikolons nur, wenn der Code nicht normal ohne Semikolons analysiert wird. Mit anderen Worten (ähnlich wie bei den beiden Ausnahmen im folgenden Code) wird JavaScript am Ende der aktuellen Anweisung Semikolons füllen, wenn die aktuelle Anweisung und nachfolgende Nicht-Raum-Zeichen nicht analysiert werden können. Siehe den folgenden Code
var a
A
=
3
console.log (a)
JavaScript analysiert es als
var a; a = 3; Konsole.log (a);
JavaScript fügt der ersten Zeile ein Semikolon hinzu. Ohne Semikolon kann JavaScript Var AA nicht in den Code analysieren. Der zweite A kann als Anweisung "a" verwendet werden, aber JavaScript füllt das Semikolon am Ende der zweiten Zeile nicht. Weil es mit dem dritten Zeileninhalt an "a = 3" analysiert werden kann; .
Die Trennregeln einiger Aussagen führen zu einigen unerwarteten Situationen. Dieser Break -Code ist in zwei Zeilen unterteilt, was zwei unabhängige Aussagen zu sein scheint.
var y = x + f
(a+b) .ToString ()
Die Klammern in der zweiten Zeile bilden einen Funktionsaufruf mit dem F in der ersten Zeile. JavaScript wird diesen Code als betrachten
var y = x+f (a+b) .ToString ();
Offensichtlich ist die ursprüngliche Absicht des Codes nicht so. Um den obigen Code in zwei verschiedene Aussagen zu ermöglichen, müssen Sie das Display -Semikolon des Verhaltens manuell ausfüllen.
Wenn eine Aussage mit ([ / + - - ist im Allgemeinen sehr wahrscheinlich mit der vorherigen Aussage analysiert. Aussagen beginnend mit / + - sind nicht sehr häufig, aber Aussagen beginnen mit ([sind sehr häufig. Zumindest in einigen JavaScript -Codierungsstilen. Einige Programmierer, die konservativ eine Semikolon hinzufügen, sodass die vorherige Aussage stillleichte Semikolon durch die Verwendung des Semikolons durch den Fehler, das durch den Fehler, durch die Handlung wird.
Wenn die aktuelle Anweisung und die nächste Zeilenanweisung nicht zusammengeführt und analysiert werden können. JavaScript füllt das Semikolon nach der ersten Zeile, die eine gemeinsame Regel ist, aber zwei Spalten außerhalb. Die erste Ausnahme beinhaltet die Rückkehr, Birak, er setzt die Aussage fort, wenn auf diese drei Schlüsselwörter eine Zeilenpause folgen. JavaScript wird Semikolons in der Newline ausfüllen. Zum Beispiel
Zum Beispiel
Zurückkehren
WAHR;
Und JavaScript analysiert in
Rückkehr; ture;
Und die ursprüngliche Bedeutung des Code ist
Wahrheit zurückkehren;
Mit anderen Worten, zwischen den nachfolgenden Ausdrücken mit Rückgabe, Bruch und Konturs können keine Linienbrüche bestehen. Wenn ein Zeilenumbruch hinzugefügt wird, kann das Programm nur unter besonderen Umständen einen Fehler melden. Darüber hinaus ist das Debuggen des Programms unpraktisch.
Das zweite Beispiel ist, dass diese Expressionsymbole das Präfix und das Suffix des Bezeichnungsausdrucks darstellen können. Wenn der Ausdruck folgt, wenn es als Suffixausdruck verwendet wird. Es und der Ausdruck sollten als eine Zeile angesehen werden. Andernfalls wird das Semikolon am Ende der Linie gefüllt.
Die Codekopie lautet wie folgt:
X
++
yy
Der obige Code wird analysiert als
Die Codekopie lautet wie folgt:
X;
++ y