6. Unterrichtsblock
Kursinhalte
JavaScript Switch
Die switch
-Anweisung wird verwendet, um verschiedene Aktionen basierend auf verschiedenen Bedingungen auszuführen.
Unterschied zu if – else
Die switch-Anweisung kann gegen bedingte Anweisungen mit if / else ausgetauscht werden. Wenn mehr als zwei oder drei Alternativen bestehen, ist die switch-Anweisung einfacher in der Handhabung und auch effizienter, da sie die Bedingung nicht für jede Option testen muss.
Anwendung
Verwendet wird die switch
-Anweisung, um einen von vielen auszuführenden Codeblöcken auszuwählen.
// SYNTAX
switch(expression) {
case x:
// Code block
break;
case y:
// Code Block
break;
default:
// Code Block
}
So funktioniert es:
- Die switch-Expression wird einmal ausgewertet.
- Der Wert der Espression wird mit den Werten jedes Falls (case) verglichen.
- Wenn es eine Übereinstimmung gibt, wird der zugehörige Codeblock ausgeführt.
- Wenn es keine Übereinstimmung gibt, wird der Standardcodeblock (default) ausgeführt.
Beispiel:
Die Methode getDay()
gibt den Wochentag als Zahl zwischen 0 und 6 zurück. (Sonntag=0, Montag=1, Dienstag=2 ..)
Dieses Beispiel verwendet die Wochentagsnummer, um den Wochentagsnamen zu berechnen:
switch (new Date().getDay()) {
case 0:
tag = "Sonntag";
break;
case 1:
tag = "Montag";
break;
case 2:
tag = "Dienstag";
break;
case 3:
tag = "Mittwoch";
break;
case 4:
tag = "Donnerstag";
break;
case 5:
tag = "Freitag";
break;
case 6:
tag = "Samstag";
}
Ergebnis:
Das break-Schlüsselwort
Wenn JavaScript ein break
-Schlüsselwort erreicht, bricht es aus dem aktuellen switch
-Block aus. Dadurch wird die Ausführung innerhalb des switch
-Blocks gestoppt.
Es ist nicht erforderlich, den letzten Fall in einem switch
-Block zu unterbrechen. Dort bricht (endet) der Block sowieso.
Hinweis: Wenn die
break
-Anweisung weggelassen wird, wird der nächste Fall ausgeführt, auch wenn die Auswertung nicht mit dem Fall übereinstimmt.
Aufgabe
Baue den Code aus dem oben gezeigten Beispiel mit der Tagesanzeige um. Die Anzeige des heutigen Tages soll erscheinen, wenn mit der Maus über ein rot ausgefülltes <div> Element gefahren wird. Die Namen der Tage sollen dabei in einem Array gespeichert sein und auch aus dem Array geladen werden.
Das default-Schlüsselwort
Das default
-Schlüsselwort gibt den Code an, der ausgeführt werden soll, wenn keiner der vorhandenen Fälle zutrifft:
switch (new Date().getDay()) {
case 5:
text = "Heute ist Freitag 🍻";
break;
case 6:
text = "Heute ist Samstag 🥳";
break;
case 0:
text = "Heute ist Sonntag 😴";
break;
default:
text = "Warte auf Wochenende 😭";
}
Status:
Merke: Der
default
-Block muss nicht zwingend der letzte Block in der Kette von Fällen sein. Wenn er derdefault
-Block jedoch nicht der letzte Block ist, muss er mit einembreak
beendet werden.
Gemeinsame Blöcke
Manchmal möchte man, dass verschiedene switch
-Fälle denselben Code verwenden. In diesem Beispiel teilen sich 3 und 4 denselben Codeblock und 0, 6 und 5 teilen sich einen anderen Codeblock:
switch (new Date().getDay()) {
default:
text = "Warte auf Wochenende 😭";
break;
case 3:
case 4:
text = "Bald ist Wochenende";
break;
case 0:
case 6:
case 5:
text = "Hoch die Hände - Wochenende! 🥳";
}
Reihenfolge in der Verarbeitung
- Wenn mehrere Fälle mit einem Fallwert übereinstimmen, wird der erste Fall ausgewählt.
- Wenn keine übereinstimmenden Fälle gefunden werden, fährt das Programm mit dem
default
-Block fort. - Wenn kein
default
-Wert gefunden wird, fährt das Programm mit der/den Anweisung(en) nachswitch
fort.
Strikter Vergleich
switch
-Fälle verwenden den strikten Vergleich (===). Die Werte müssen vom gleichen Typ sein, um übereinstimmen zu können. Ein strenger Vergleich kann nur true
sein, wenn die Operanden vom gleichen Typ sind. In diesem Beispiel gibt es keine Übereinstimmung für x:
let x = "0";
switch (x) {
case 0:
text = "Aus";
break;
case 1:
text = "An";
break;
default:
text = "Kein Wert verfügbar";
}
Aufgabe
Probiere o.g. Code aus, um ein Gefühl für die Anweisungen zu bekommen.
JavaScript Math-Objekt
Mit dem JavaScript-Math-Objekt können mathematische Aufgaben mit Zahlen ausgeführt werden.
// SYNTAX
Math.property;
// Beispiel:
Math.PI;
Ausgabe:
Anwendung
Im Gegensatz zu anderen Objekten hat das Math-Objekt keinen Konstruktor. Das Math-Objekt ist statisch. Alle Methoden und Eigenschaften können verwendet werden, ohne zuerst ein Math-Objekt zu erstellen.
Math-Eigenschaften (Konstanten)
JavaScript bietet 8 mathematische Konstanten, auf die als mathematische Eigenschaften zugegriffen werden kann:
Math.E // gibt die Eulersche Zahl aus
Math.PI // gibt PI aus
Math.SQRT2 // gibt die Quadratwurzel von 2 aus
Math.SQRT1_2 // gibt die Quadratwurzel von 1/2 aus
Math.LN2 // gibt den natürlichen Logarithmus von 2 aus
Math.LN10 // gibt den natürlichen Logarithmus von 10 aus
Math.LOG2E // gibt den Logarithmus zur Basis 2 von E zurück
Math.LOG10E // gibt den Logarithmus zur Basis 10 von E zurück
Math-Methoden
// SYNTAX
Math.methode(nummer);
// Beispiel:
Math.round(3.141592653589793);
Math.round();
// Funktion zum Runden auf 2 Nachkommazahlen:
function rundeAufZwei(zahl) {
return +(Math.round(zahl + "e+2") + "e-2");
}
document.getElementById("demo4").innerHTML = rundeAufZwei(3.006);
Methode | Beschreibung |
---|---|
abs(x) | Gibt den absoluten Wert von x zurück |
acos(x) | Gibt den Arkuskosinus von x im Bogenmaß (Radiant) zurück |
acosh(x) | Gibt den hyperbolischen Arkuskosinus von x zurück |
asin(x) | Gibt den Arkussinus von x im Bogenmaß (Radiant) zurück |
asinh(x) | Gibt den hyperbolischen Arkussinus von x zurück |
atan(x) | Gibt den Arkustangens von x als numerischen Wert zwischen -PI/2 und PI/2 Bogenmaß zurück |
atan2(y, x) | Gibt den Arkustangens des Quotienten seiner Argumente zurück |
atanh(x) | Gibt den hyperbolischen Arkustangens von x zurück |
cbrt(x) | Gibt die Kubikwurzel von x zurück |
ceil(x) | Gibt x zurück, aufgerundet auf die nächste Ganzzahl |
cos(x) | Gibt den Kosinus von x zurück (x ist im Bogenmaß) |
cosh(x) | Gibt den hyperbolischen Kosinus von x zurück |
exp(x) | Gibt den Wert von Ex aus |
floor(x) | Gibt x zurück, abgerundet auf die nächste Ganzzahl |
log(x) | Gibt den natürlichen Logarithmus (Basis E) von x zurück |
max(x, y, z, …, n) | Gibt die Zahl mit dem höchsten Wert zurück |
min(x, y, z, …, n) | Gibt die Zahl mit dem niedrigsten Wert zurück |
pow(x, y) | Gibt den Wert von x hoch y zurück |
random() | Gibt eine zufällige Zahl zwischen 0 und 1 aus |
round(x) | Rundet x auf die nächste ganze Zahl |
sign(x) | Gibt zurück, ob x negativ, null oder positiv ist (-1, 0, 1) |
sin(x) | Gibt den Sinus von x zurück (x ist im Bogenmaß) |
sinh(x) | Gibt den hyperbolischen Sinus von x zurück |
sqrt(x) | Gibt die Quadratwurzel von x zurück |
tan(x) | Gibt den Tangens eines Winkels zurück |
tanh(x) | Gibt den hyperbolischen Tangens einer Zahl zurück |
trunc(x) | Gibt den ganzzahligen Teil einer Zahl zurück (x) |
Übungsaufgaben
- Probiere ein paar der Math.Methoden aus, um ein Gefühl für diese zu erhalten.
- Probiere auch das Runden von Zahlen mit der oben gezeigten Funktion aus.