Einführung in JavaScript

Trotz seines Namens ist JavaScript nur insofern mit Java verwandt, als die beiden einige syntaktische Ähnlichkeiten haben. Die Syntax von JavaScript war bei der anfänglichen Entwicklung lose von der Java-Syntax inspiriert und hieß "LiveScript", als es 1995 in einer Betaversion von Netscape Navigator zur Verfügung gestellt wurde. Dies war sowohl zur Übereinstimmung mit einigen anderen benannten Angeboten von Netscape als auch als Hinweis auf die Tatsache, dass es "live" im Browser ausgeführt wird, zu ermöglichen. Microsoft hat mit Internet Explorer 3.0 seine eigene JavaScript-Implementierung JScript veröffentlicht.

Netscape übermittelte diese frühen Arbeiten an Ecma International, eine Organisation, die technische Standards entwickelt und veröffentlicht, um zu formalisieren und zu erklären, wie diese Skriptsprache von anderen Browsern verstanden werden sollte. 1997 veröffentlichte Ecma International ECMA-262 zur Standardisierung der ersten Version einer Skriptsprache namens ECMAScript. ECMAScript ist der Standard, der die Erstellung spezifischerer Skriptsprachen vorgibt. Dazu gehören zum Beispiel die spätere Arbeit von Microsoft am heute eingestellten JScript, Adobes JavaScript und JavaScript selbst.

Diese Unterscheidung ist wichtig, wenn wir bestimmte Aspekte und Funktionen von JavaScript erörtern. „ES5“ bezieht sich auf die erste „versionierte“ Hauptversion des ECMAScript-Standards im Jahr 2009, nach Jahren weiterer stückweiser Entwicklung. „ES6“ (oder „ES2015“) ist eine Abkürzung für die Standards, die durch die sechste Ausgabe von ECMAScript festgelegt wurden, das 2015 veröffentlicht wurde. Nach ES6 werden jährlich neue Versionen des ECMAScript-Standards veröffentlicht. Die Änderungen und Ergänzungen jeder Version werden im jeweiligen Jahr aufgeführt, z. B. "ES2016" oder "ES2017".

Die grundlegenden Regeln

Im Gegensatz zu kompilierten Sprachen wird JavaScript nicht aus Code übersetzt, der vom Nutzer in ein Formular übersetzt wird, das der Browser verstehen kann. Ein Skript wird zusammen mit Assets wie Markups, Bildern und Stylesheets an den Browser gesendet. Der Browser interpretiert es so, wie er geschrieben wurde: als visuell lesbare Folge von Unicode-Zeichen, die von links nach rechts und von oben nach unten geparst wird.

Wenn ein JavaScript-Interpreter ein Skript empfängt, führt er zuerst eine lexikalische Analyse durch, bei der die lange Zeichenfolge, aus der ein Skript besteht, geparst und in die folgenden diskreten Eingabeelemente konvertiert wird:

  • Tokens
  • Steuerzeichen für das Format
  • Zeilenabschlusszeichen
  • Kommentare
  • Leerraum (bedeutet fast immer Tabulatoren und Leerzeichen).

Das Ergebnis eines Skripts bleibt nach dem Aktualisieren oder Verlassen der aktuellen Seite nicht erhalten, es sei denn, das Skript enthält ausdrückliche Anweisungen für andere Aktionen.

Allgemein bestehen JavaScript-Anwendungen aus Anweisungen und Ausdrücken.

Erklärungen

Eine Anweisung ist eine Anweisungseinheit, die aus einer oder mehreren Codezeilen besteht, die eine Aktion darstellen. Sie können beispielsweise die folgende Anweisung verwenden, um einer Variablen mit dem Namen myVariable einen Wert zuzuweisen:

let myVariable = 4;

myVariable;
> 4

Anweisungen müssen mit einem Semikolon enden, um richtig interpretiert zu werden. Diese Semikolons sind jedoch nicht immer erforderlich, wenn JavaScript geschrieben wird. Dank der Funktion automatisches Einfügen von Semikolons kann ein Zeilenumbruch nach einer vollständigen Anweisung als Semikolon behandelt werden, wenn ein fehlendes Semikolon einen Fehler verursachen würde.

ASI ist eine Fehlerkorrektur und kein freizügiger Aspekt von JavaScript an sich. Da Sie sich zu sehr auf diese Fehlerkorrektur verlassen können, kann dies zu Mehrdeutigkeiten führen, durch die Ihr Code beschädigt wird. Daher sollten Sie trotzdem jede Anweisung manuell mit einem Semikolon beenden.

Sperrungen

Eine Blockanweisung gruppiert eine beliebige Anzahl von Anweisungen und Deklarationen in geschweiften Klammern ({}). Sie können Anweisungen an Stellen kombinieren, an denen JavaScript nur eine erwartet.

Blockanweisungen werden am häufigsten neben Kontrollfluss-Anweisungen wie if angezeigt:

if ( x === 2 ) {
  //some behavior;
}

Ausdrücke

Ein Ausdruck ist eine Codeeinheit, die zu einem Wert führt und daher überall dort verwendet werden kann, wo ein Wert erwartet wird. 2 + 2 ist ein Ausdruck, der den Wert 4 ergibt:

2 + 2;
> 4

Der „Gruppierungsoperator“, ein übereinstimmendes Paar einschließender Klammern, wird verwendet, um Teile eines Ausdrucks zu gruppieren, damit ein Teil des Ausdrucks als eine Einheit ausgewertet wird. Sie können beispielsweise einen Gruppierungsoperator verwenden, um override the mathematical order of operations oder die Lesbarkeit von Code zu verbessern:

2 + 2 * 4;
> 10

( 2 + 2 ) * 4;
> 16

let myVariable = ( 2 + 2 );

myVariable;
> 4

Schwache Eingabe

JavaScript ist eine schwach typisierte Sprache. Das bedeutet, dass ein Datenwert nicht explizit als spezifischer Datentyp markiert werden muss. Im Gegensatz zu einer stark typisierten Sprache kann JavaScript den gewünschten Typ aus dem Kontext eines Werts ableiten und den Wert in diesen Typ konvertieren. Dieser Vorgang wird als Typerzwingung bezeichnet.

Wenn Sie beispielsweise einem Stringwert in einer stark typisierten Sprache wie Python eine Zahl hinzufügen, wird ein Fehler zurückgegeben:

>>> "1" + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

Anstatt einen Fehler zurückzugeben, erzwingt JavaScript den Zahlenwert in einen String und verkettet die beiden Werte. Dies ist höchstwahrscheinlich das beabsichtigte Verhalten, wenn einem String ein beliebiger Wert hinzugefügt wird:

"1" + 1;
> "11"

Datentypen können auch explizit erzwungen werden. Im folgenden Beispiel wird der numerische Wert 100 mithilfe der integrierten Methode toString von JavaScript in den Stringwert "100" umgewandelt:

let myVariable = 100;

typeof myVariable;
> "number"

myVariable = myVariable.toString();
> "100"

typeof myVariable;
> "string"

Groß-/Kleinschreibung

Im Gegensatz zu HTML und den meisten CSS wird bei JavaScript selbst die Groß- und Kleinschreibung berücksichtigt. Das bedeutet, dass alles einheitlich geschrieben werden muss – von den in die Sprache integrierten Eigenschaften und Methoden bis hin zu den Kennzeichnungen, die Sie selbst definieren.

console.log( "Log this." );
> Log this.

console.Log( "Log this too." );
> Uncaught TypeError: console.Log is not a function
const myVariable = 2;

myvariable;
> Uncaught ReferenceError: variablename is not defined

myVariable;
> 2

Leerzeichen

Bei JavaScript werden Leerzeichen nicht berücksichtigt. Das bedeutet, dass der Interpreter die Menge und den Typ (Tabulatoren oder Leerzeichen) des verwendeten Leerzeichens ignoriert.

                     console.log(       "Log this"  );console.log("Log this too");
> "Log this."
> "Log this too."

Das Vorhandensein von Leerzeichen kann jedoch als Trennzeichen zwischen lexikalen Tokens von Bedeutung sein:

let x;

[Tokens: [let] [x] ]

letx;
> Uncaught ReferenceError: letx is not defined

[Tokens: [letx] ]

Wenn Leerzeichen zum Trennen aussagekräftiger lexischer Tokens verwendet werden, ignoriert der Parser die Menge und den Typ des Leerzeichens:

let           x                             =                           2;

[Tokens: [let] [x] [=] [2] ]

Das Gleiche gilt für Zeilenumbrüche. In einigen Fällen können Zeilenumbrüche jedoch Probleme verursachen, wenn sie eine Anweisung vorzeitig beenden:

let x
=
2;

[Tokens: [let] [x] [=] [2] ]

Stilistisch gesehen nehmen einige Arten von Aussagen häufig eine einzelne Zeile ein:

let x = 1;
let y = 2;

Für einige Anweisungen werden üblicherweise mehrere Zeilen verwendet:

if ( x == 2 ) {
  //some behavior;
}

Diese Konventionen dienen jedoch ausschließlich der besseren Lesbarkeit. JavaScript interpretiert die vorherigen Beispiele so:

let x=1;let y=2;
if(x==2){}

Aus diesem Grund ist bei der Vorbereitung von JavaScript für eine Produktionsumgebung ein automatisierter Prozess, bei dem nicht notwendige Leerzeichen aus Skriptdateien entfernt werden, neben einer Reihe anderer Optimierungen ein häufiger Schritt bei der Vorbereitung von JavaScript für eine Produktionsumgebung.

Die Verwendung von Leerzeichen in JavaScript hängt vor allem von Autor- und Administratorpräferenzen ab. Bei JavaScript-Projekten, in denen mehrere Entwickler Code beitragen, werden häufig bestimmte Leerzeichen vorgeschlagen oder erzwungen, um eine einheitliche Codeformatierung zu gewährleisten. Zum Beispiel werden verschachtelte Anweisungen durch die Verwendung von Tabulatoren oder Leerzeichen eingerückt:

let myVariable = 10;

if ( typeof myVariable === "number" ) {
    console.log( "This variable is a number." );
    if( myVariable > 5 ) {
     console.log( "This variable is greater than five." );
    }
}

> "This variable is a number."
> "This variable is greater than five."

Wissen testen

Was ist ein Ausdruck?

Eine Codeeinheit, die zu einem Wert führt.
Einen Kommentar, in dem die Funktion des Codes erklärt wird.
Eine Gruppe von Anweisungen und Deklarationen.

Bei JavaScript wird zwischen Groß- und Kleinschreibung unterschieden.

Wahr
Falsch