// DATENTYPEN let zahl = 42; let text = "Hallo Welt"; let wahr = true; let undefiniert; let leer = null; let symbol = Symbol("id"); // erzeugt einzigartigen Wert let gross = 123n; // bigint: für sehr große Ganzzahlen // UNTERSCHIED ZWISCHEN null UND undefined console.log(typeof undefiniert); // "undefined" console.log(typeof leer); // "object" console.log(undefiniert == null); // true → lose Gleichheit, beide gelten als "leer" console.log(undefiniert === null); // false → strikte Gleichheit, Typen sind verschieden // OBJEKTE MIT METHODEN // Beispiel: const mit Objekt const person = { name: "Moritz" }; person.name = "Max"; // person = {} //nicht erlaubt, weil const // Beispiel: Objekt mit Methode let benutzer = { name: "Galinda", alter: 25, begruessen: function() { console.log("Hallo, ich bin " + this.name); } }; benutzer.begruessen(); // Methode aufrufen console.log(benutzer["alter"]); // Zugriff via Schlüssel // KONTROLLFLUSS if (zahl > 40) { console.log("Zahl ist größer als 40"); } else if (zahl === 40) { console.log("Zahl ist genau 40"); } else { console.log("Zahl ist kleiner als 40"); } switch (text) { case "Hallo Welt": console.log("Begrüßung erkannt"); break; case "Hi": console.log("Kurzform erkannt"); break; default: console.log("Unbekannter Text"); } switch (42) { case "42": // kein Match, da Typ unterschiedlich -> Vergleich basiert auf strikter Gleichheit (===) console.log("String"); break; case 42: console.log("Number"); break; } for (let i = 0; i < 3; i++) { console.log("Zähler:", i); } // ARRAYS let obst = ["Apfel", "Banane", "Kirsche"]; obst.push("Mango"); console.log(obst[1]); obst.forEach(function(f) { console.log("Frucht:", f); }); const zahlen = [1, 2, 3]; // map erzeugt ein neues Array const verdoppelt = zahlen.map(n => n * 2); console.log(verdoppelt); // [2, 4, 6] // SPREAD-OPERATOR const extendedZahlen = [...zahlen, 4]; console.log(extendedZahlen); const extendedBenutzer = {...benutzer, beiname: "die Gute"} console.log(extendedBenutzer["name"] + " " + extendedBenutzer["beiname"]) // ERROR HANDLING // try-catch-finally funktioniert ähnlich wie in Java try { // Fehler absichtlich auslösen throw new Error("Etwas ist schiefgelaufen"); } catch (e) { console.error("Fehler:", e.message); // Fehlerbehandlung } finally { console.log("Cleanup abgeschlossen"); // wird immer ausgeführt } // JSON // Objekt → JSON-String const obj = { name: "Margaret", alter: 13 }; const jsonStr = JSON.stringify(obj); console.log(jsonStr); // JSON-String → Objekt const parsed = JSON.parse(jsonStr); console.log(parsed.alter);