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 behandeltMehr 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 ); // WAHRMehr 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.