# JavaScript Variablen: Umfassende Übersicht ## Variablendeklarationen | Schlüsselwort | Gültigkeitsbereich | Neu-Zuweisung | Neu-Deklaration | Beispiel | Beschreibung | |---------------|---------------------|---------------|-----------------|----------------------------------------------|------------------------------------------------------------------------------------| | `var` | Funktions- oder global | ✅ | ✅ | ```javascript\nvar alter = 30;\nvar alter = 35; // erlaubt\n``` | Ältere Variablendeklaration. Kann neu zugewiesen und neu deklariert werden. | | `let` | Block-scoped | ✅ | ❌ | ```javascript\nlet name = "Anna";\nname = "Lisa"; // erlaubt\n// let name = "Maria"; // Fehler!\n``` | Moderne Variablendeklaration. Kann neu zugewiesen, aber nicht neu deklariert werden. | | `const` | Block-scoped | ❌ | ❌ | ```javascript\nconst PI = 3.14159;\n// PI = 3; // Fehler - keine Neuzuweisung\nconst person = { name: "Max" };\nperson.name = "Tom"; // Erlaubt (Objekteigenschaften können geändert werden)\n``` | Konstante Variable. Referenz kann nicht geändert werden (bei Objekten und Arrays können Inhalte jedoch modifiziert werden). | ## Variablentypen (Primitive und Referenztypen) ### Primitive Typen | Typ | Beschreibung | Beispielcode | |-------------|-------------------------------|-------------------------------------------------------------------------------------| | `number` | Repräsentiert numerische Werte | ```javascript\nlet ganzzahl = 42;\nlet dezimalzahl = 3.14;\nlet negativ = -10;\nlet spezial = Infinity;\n``` | | `string` | Repräsentiert Textwerte | ```javascript\nlet name = "Alice";\nlet gruss = 'Hallo';\nlet template = `Mein Name ist ${name}`;\n``` | | `boolean` | Repräsentiert Wahrheitswerte | ```javascript\nlet istWahr = true;\nlet istFalsch = false;\nlet vergleich = 5 > 3; // true\n``` | | `undefined` | Standardwert nicht initialisierter Variablen | ```javascript\nlet variable;\nconsole.log(variable); // undefined\n``` | | `null` | Repräsentiert bewusst keine Objektreferenz | ```javascript\nlet leer = null;\n``` | | `symbol` | Einzigartige und unveränderliche primitive Werte | ```javascript\nlet uniqueKey = Symbol("beschreibung");\nlet anotherKey = Symbol("beschreibung");\nconsole.log(uniqueKey === anotherKey); // false\n``` | | `bigint` | Für sehr große Ganzzahlen | ```javascript\nlet grosseZahl = 1234567890123456789012345678901234567890n;\n``` | ### Referenztypen | Typ | Beschreibung | Beispielcode | |------------|-------------------------------|-------------------------------------------------------------------------------------| | `object` | Komplexe Datenstrukturen | ```javascript\nlet person = {\n name: "Max",\n alter: 30,\n sayHello: function() {\n console.log("Hallo!");\n }\n};\n``` | | `array` | Geordnete Sammlungen von Elementen | ```javascript\nlet zahlen = [1, 2, 3, 4, 5];\nlet gemischt = [1, "text", true, {key: "wert"}];\n``` | | `function` | Ausführbare Codeblöcke | ```javascript\nfunction addieren(a, b) {\n return a + b;\n}\nlet multiply = (a, b) => a * b;\n``` | ## Variablen-Scope ```javascript // Global Scope var globalVar = "Ich bin global"; function beispielFunktion() { // Function Scope let functionVar = "Nur in der Funktion sichtbar"; if (true) { // Block Scope const blockVar = "Nur im Block sichtbar"; } } ``` ## Tipps und Best Practices * **Verwenden Sie `const` als Standard:** Nutzen Sie `const` für Variablen, deren Wert sich nach der Initialisierung nicht ändern soll. * **Nutzen Sie `let` für Variablen, die sich ändern:** Wenn Sie wissen, dass der Wert einer Variablen später geändert werden muss, verwenden Sie `let`. * **Vermeiden Sie `var` in modernem JavaScript:** Aufgrund seines Funktions-Scopes und des Verhaltens bei der Neu-Deklaration kann `var` zu unerwarteten Problemen führen. * **Verwenden Sie aussagekräftige Variablennamen:** Wählen Sie Namen, die den Zweck der Variablen klar widerspiegeln. * **Achten Sie auf den Scope Ihrer Variablen:** Verstehen Sie, wo Ihre Variablen sichtbar und zugänglich sind, um Fehler zu vermeiden. ## Typumwandlung ### Implizite Typumwandlung (Coercion) ```javascript let zahl = "5" + 3; // Ergebnis: "53" (string) let summe = "5" - 3; // Ergebnis: 2 (number) ``` ### Explizite Typumwandlung ```javascript let wert = "123"; let nummer = Number(wert); // Umwandlung zu number let text = String(nummer); // Umwandlung zu string let bool = Boolean(wert); // Umwandlung zu boolean ``` ## Type Checking ```javascript let x = 42; console.log(typeof x); // "number" console.log(typeof "Hallo"); // "string" console.log(typeof true); // "boolean" console.log(typeof undefined); // "undefined" console.log(typeof null); // "object" (Quirk in JavaScript) console.log(typeof {}); // "object" console.log(typeof []); // "object" console.log(typeof function(){}); // "function" ``` Diese Übersicht bietet Ihnen einen umfassenden Einblick in die Welt der JavaScript-Variablen, ihre Eigenschaften, Typen und Verwendung.