Dieses Kapitel fasst kurz die Funktionen von JavaScript zusammen, die wir bisher gelernt haben, und legt dabei besonderes Augenmerk auf subtile Momente.
Anweisungen werden durch ein Semikolon getrennt:
alarm('Hallo'); alarm('Welt');
Normalerweise wird ein Zeilenumbruch auch als Trennzeichen behandelt, sodass das auch funktionieren würde:
alarm('Hallo') alarm('Welt')
Das nennt man „automatische Semikolon-Einfügung“. Manchmal funktioniert es nicht, zum Beispiel:
Alert("Nach dieser Nachricht wird ein Fehler angezeigt") [1, 2].forEach(alert)
Die meisten Codestyle-Anleitungen stimmen darin überein, dass wir nach jeder Anweisung ein Semikolon einfügen sollten.
Semikolons sind nach Codeblöcken {...}
und Syntaxkonstrukten mit ihnen wie Schleifen nicht erforderlich:
Funktion f() { // Nach der Funktionsdeklaration ist kein Semikolon erforderlich } für(;;) { // Nach der Schleife ist kein Semikolon erforderlich }
…Aber selbst wenn wir irgendwo ein „zusätzliches“ Semikolon einfügen können, ist das kein Fehler. Es wird ignoriert.
Mehr in: Codestruktur.
Um alle Funktionen von modernem JavaScript vollständig zu aktivieren, sollten wir Skripte mit "use strict"
starten.
'strikt verwenden'; ...
Die Direktive muss am Anfang eines Skripts oder am Anfang eines Funktionskörpers stehen.
Ohne "use strict"
funktioniert zwar noch alles, einige Features verhalten sich aber auf die altmodische, „kompatible“ Art und Weise. Im Allgemeinen würden wir das moderne Verhalten bevorzugen.
Einige moderne Funktionen der Sprache (wie Klassen, die wir in Zukunft studieren werden) ermöglichen implizit den strikten Modus.
Mehr in: Der moderne Modus, „use strict“.
Kann deklariert werden mit:
let
const
(konstant, kann nicht geändert werden)
var
(im alten Stil, siehe später)
Ein Variablenname kann Folgendes enthalten:
Buchstaben und Ziffern, aber das erste Zeichen darf keine Ziffer sein.
Die Zeichen $
und _
sind normal und den Buchstaben ebenbürtig.
Auch nicht-lateinische Alphabete und Hieroglyphen sind erlaubt, werden aber üblicherweise nicht verwendet.
Variablen werden dynamisch typisiert. Sie können jeden Wert speichern:
sei x = 5; x = „John“;
Es gibt 8 Datentypen:
number
für Gleitkomma- und Ganzzahlzahlen,
bigint
für ganze Zahlen beliebiger Länge,
string
für Saiten,
boolean
für logische Werte: true/false
,
null
– ein Typ mit einem einzelnen Wert null
, was „leer“ oder „existiert nicht“ bedeutet.
undefined
– ein Typ mit einem einzelnen Wert undefined
, was „nicht zugewiesen“ bedeutet.
object
und symbol
– für komplexe Datenstrukturen und eindeutige Bezeichner haben wir sie noch nicht gelernt.
Der Operator typeof
gibt den Typ für einen Wert zurück, mit zwei Ausnahmen:
typeof null == "object" // Fehler in der Sprache typeof function(){} == "function" // Funktionen werden speziell behandelt
Mehr in: Variablen und Datentypen.
Wir verwenden einen Browser als Arbeitsumgebung, daher sind die grundlegenden UI-Funktionen:
prompt(question, [default])
Stellen Sie eine question
und geben Sie entweder das zurück, was der Besucher eingegeben hat, oder null
, wenn er auf „Abbrechen“ geklickt hat.
confirm(question)
Stellen Sie eine question
und schlagen Sie vor, zwischen „OK“ und „Abbrechen“ zu wählen. Die Auswahl wird als true/false
zurückgegeben.
alert(message)
Eine message
ausgeben.
Alle diese Funktionen sind modal , sie unterbrechen die Codeausführung und verhindern, dass der Besucher mit der Seite interagiert, bis er antwortet.
Zum Beispiel:
let userName = prompt("Ihr Name?", "Alice"); let isTeaWanted = bestätigen("Möchten Sie etwas Tee?"); Alert( "Besucher: " + Benutzername ); // Alice Alert( "Tee gesucht: " + isTeaWanted ); // WAHR
Mehr in: Interaktion: Alarmieren, Auffordern, Bestätigen.
JavaScript unterstützt die folgenden Operatoren:
Arithmetisch
Regulär: * + - /
, auch %
für den Rest und **
für Potenz einer Zahl.
Das binäre Plus +
verkettet Zeichenfolgen. Und wenn einer der Operanden ein String ist, wird auch der andere in einen String konvertiert:
alarm( '1' + 2 ); // '12', Zeichenfolge alarm( 1 + '2' ); // '12', Zeichenfolge
Aufgaben
Es gibt eine einfache Zuweisung: a = b
und kombinierte wie a *= 2
.
Bitweise
Bitweise Operatoren arbeiten mit 32-Bit-Ganzzahlen auf der niedrigsten Bitebene: Sehen Sie sich bei Bedarf die Dokumente an.
Bedingt
Der einzige Operator mit drei Parametern: cond ? resultA : resultB
. Wenn cond
wahr ist, wird resultA
zurückgegeben, andernfalls resultB
.
Logische Operatoren
Logisches UND &&
und ODER ||
Führen Sie eine Kurzschlussauswertung durch und geben Sie dann den Wert dort zurück, wo er aufgehört hat (nicht unbedingt true
/ false
). Logisches NICHT !
Konvertiert den Operanden in einen booleschen Typ und gibt den umgekehrten Wert zurück.
Nullischer Koaleszenzoperator
??
Der Operator bietet eine Möglichkeit, einen definierten Wert aus einer Liste von Variablen auszuwählen. Das Ergebnis a ?? b
ist a
es sei denn, es ist null/undefined
, dann b
.
Vergleiche
Gleichheitsprüfung ==
wandelt Werte verschiedener Typen in eine Zahl um (außer null
und undefined
, die einander gleich sind und nichts anderes), sodass diese gleich sind:
alarm( 0 == false ); // WAHR alarm( 0 == '' ); // WAHR
Auch andere Vergleiche konvertieren in eine Zahl.
Der strikte Gleichheitsoperator ===
führt die Konvertierung nicht durch: Unterschiedliche Typen bedeuten immer unterschiedliche Werte dafür.
Die Werte null
und undefined
sind etwas Besonderes: Sie ==
einander und sind mit nichts anderem gleich.
Bei Größer/Kleiner-Vergleichen werden Zeichenfolgen zeichenweise verglichen, andere Typen werden in eine Zahl umgewandelt.
Andere Betreiber
Es gibt nur wenige andere, wie einen Kommaoperator.
Mehr in: Grundlegende Operatoren, Mathematik, Vergleiche, Logische Operatoren, Nullish-Koaleszenzoperator „??“.
Wir haben drei Arten von Schleifen behandelt:
// 1 while (Bedingung) { ... } // 2 Tun { ... } while (Bedingung); // 3 for(let i = 0; i < 10; i++) { ... }
Die in for(let...)
Schleife deklarierte Variable ist nur innerhalb der Schleife sichtbar. Wir können aber auch let
weglassen und eine vorhandene Variable wiederverwenden.
Die Anweisungen break/continue
ermöglichen das Verlassen der gesamten Schleife/aktuellen Iteration. Verwenden Sie Beschriftungen, um verschachtelte Schleifen zu unterbrechen.
Details in: Schleifen: while und for.
Später werden wir weitere Arten von Schleifen für den Umgang mit Objekten untersuchen.
Das „switch“-Konstrukt kann mehrere if
Prüfungen ersetzen. Für Vergleiche wird ===
(strikte Gleichheit) verwendet.
Zum Beispiel:
let age = prompt('Dein Alter?', 18); wechseln (Alter) { Fall 18: alarm("Funktioniert nicht"); // Das Ergebnis der Eingabeaufforderung ist eine Zeichenfolge, keine Zahl brechen; Fall „18“: alarm("Das funktioniert!"); brechen; Standard: alarm("Jeder Wert, der nicht dem oben genannten entspricht"); }
Details in: Die „switch“-Anweisung.
Wir haben drei Möglichkeiten zum Erstellen einer Funktion in JavaScript behandelt:
Funktionsdeklaration: die Funktion im Hauptcodefluss
Funktion sum(a, b) { sei Ergebnis = a + b; Ergebnis zurückgeben; }
Funktionsausdruck: die Funktion im Kontext eines Ausdrucks
sei sum = function(a, b) { sei Ergebnis = a + b; Ergebnis zurückgeben; };
Pfeilfunktionen:
// Ausdruck auf der rechten Seite sei sum = (a, b) => a + b; // oder mehrzeilige Syntax mit { ... }, muss hier zurückgegeben werden: sei sum = (a, b) => { // ... gib a + b zurück; } // ohne Argumente let sayHi = () => warning("Hallo"); // mit einem einzigen Argument sei double = n => n * 2;
Funktionen können lokale Variablen haben: solche, die in ihrem Hauptteil oder ihrer Parameterliste deklariert sind. Solche Variablen sind nur innerhalb der Funktion sichtbar.
Parameter können Standardwerte haben: function sum(a = 1, b = 2) {...}
.
Funktionen geben immer etwas zurück. Wenn es keine return
-Anweisung gibt, ist das Ergebnis undefined
.
Details: siehe Funktionen, Pfeilfunktionen, Grundlagen.
Das war eine kurze Liste der JavaScript-Funktionen. Bisher haben wir nur die Grundlagen studiert. Weiter unten im Tutorial finden Sie weitere Besonderheiten und erweiterte Funktionen von JavaScript.