JavaScript Variables
Variables sind Container für Daten. Sie speichern Werte die du später verwenden kannst.
Was sind Variables?
Stell dir Variables wie beschriftete Boxen vor:
let name = 'Max';
// ^ ^
// | └── Wert (Inhalt der Box)
// └─────────Name (Label auf der Box)
console.log(name); // MaxDie 3 Arten: let, const, var
Modern: let und const (ES6, 2015)
Alt: var (veraltet, nicht mehr nutzen!)
let - Veränderbare Variable
let alter = 25;
console.log(alter); // 25
alter = 26; // Neuer Wert
console.log(alter); // 26
// Variable erneut deklarieren: FEHLER!
let alter = 30; // ❌ SyntaxErrorWann nutzen?
- ✅ Wenn Wert sich ändert
- ✅ Counter, Schleifen
- ✅ Formular-Daten
const - Konstante (unveränderbar)
const pi = 3.14159;
console.log(pi); // 3.14159
pi = 3.14; // ❌ TypeError: Assignment to constant
// Muss sofort initialisiert werden
const x; // ❌ SyntaxError
const x = 10; // ✅ OKWann nutzen?
- ✅ Wenn Wert sich NICHT ändert
- ✅ Standard-Wahl!
- ✅ Konfiguration, Funktionen, Arrays/Objects
Wichtig bei Arrays/Objects:
// Array mit const
const zahlen = [1, 2, 3];
zahlen.push(4); // ✅ OK! Inhalt änderbar
console.log(zahlen); // [1, 2, 3, 4]
zahlen = [5, 6]; // ❌ TypeError: Assignment to constant
// Variable kann nicht neu zugewiesen werden!
// Object mit const
const person = { name: 'Max' };
person.name = 'Anna'; // ✅ OK! Property änderbar
person.alter = 25; // ✅ OK! Property hinzufügen
person = { name: 'Tom' }; // ❌ TypeError
// Variable kann nicht neu zugewiesen werden!Merke: const verhindert Neu-Zuweisung, nicht Mutation!
📝 Quiz
Was passiert bei diesem Code? const zahlen = [1, 2]; zahlen.push(3);
var - Veraltet (nicht nutzen!)
var name = 'Max';
name = 'Anna'; // Kann geändert werden
// Probleme mit var:
var x = 1;
var x = 2; // ✅ Erlaubt (aber verwirrend!)
// Function Scope statt Block Scope
if (true) {
var y = 10;
}
console.log(y); // 10 (außerhalb verfügbar!)
// ❌ Nutze var NICHT mehr!
// ✅ Nutze let oder constWarum nicht var?
- ❌ Kann mehrfach deklariert werden (verwirrend)
- ❌ Function Scope statt Block Scope
- ❌ Hoisting-Probleme
- ❌ Veraltet seit ES6 (2015)
let vs. const - Wann was?
// const als Standard (Default)
const name = 'Max';
const alter = 25;
const istStudent = true;
// let nur wenn Wert sich ändert
let count = 0;
count++; // Muss sich ändern
let userInput; // Wird später gesetzt
userInput = prompt('Name:');
// Faustregel: Immer const, nur let wenn nötig!Best Practice:
- Default:
const(immer zuerst versuchen) - Falls Fehler: Zu
letwechseln - Niemals
var(veraltet)
📝 Quiz
Wann solltest du var nutzen?
Variablen-Namen (Naming Conventions)
Regeln:
// ✅ Erlaubt
let name = 'Max';
let userName = 'max123';
let user_name = 'max';
let firstName = 'Max';
let _temp = 10;
let $price = 99;
// ❌ NICHT erlaubt
let 123name = 'Max'; // Darf nicht mit Zahl starten
let user-name = 'Max'; // Kein Bindestrich
let let = 10; // Kein Keyword
let class = 'A'; // Kein reserved wordKonventionen (Best Practices):
// ✅ RICHTIG: camelCase
let userName = 'Max';
let userAge = 25;
let isStudent = true;
let maxValue = 100;
// ❌ Vermeide
let username = 'Max'; // Schwer lesbar bei langen Namen
let user_name = 'Max'; // snake_case (eher Python)
let UserName = 'Max'; // PascalCase (für Klassen)Gute Namen:
// ❌ SCHLECHT: Kryptisch
let x = 25;
let temp = 'Max';
let data = [1, 2, 3];
// ✅ GUT: Selbsterklärend
let userAge = 25;
let userName = 'Max';
let productPrices = [1, 2, 3];
// ❌ SCHLECHT: Zu lang
let theCurrentUserNameFromTheDatabase = 'Max';
// ✅ GUT: Präzise aber kurz
let userName = 'Max';📝 Quiz
Welcher Variablen-Name ist ungültig in JavaScript?
Scope - Gültigkeitsbereich
Wo ist die Variable verfügbar?
Block Scope (let & const)
// Block = { ... }
{
let x = 10;
console.log(x); // 10
}
console.log(x); // ❌ ReferenceError: x ist nicht definiert
// x existiert nur innerhalb der { }!
// Praktisches Beispiel
if (true) {
let message = 'Hallo';
console.log(message); // Hallo
}
console.log(message); // ❌ FehlerFunction Scope
function test() {
let x = 10;
console.log(x); // 10
}
test();
console.log(x); // ❌ Fehler: x nicht verfügbar außerhalbGlobal Scope
// Außerhalb aller Funktionen/Blocks
let globalVar = 'Ich bin überall sichtbar';
function test() {
console.log(globalVar); // ✅ Funktioniert
}
if (true) {
console.log(globalVar); // ✅ Funktioniert
}
console.log(globalVar); // ✅ Funktioniert
// ⚠️ Zu viele globale Variables vermeiden!📝 Quiz
Was gibt dieser Code aus? if (true) { let x = 10; } console.log(x);
Hoisting - Variablen-Hochziehen
JavaScript "hebt" Deklarationen hoch:
console.log(x); // undefined (nicht Fehler!)
var x = 10;
// Wird intern so behandelt:
var x; // Deklaration wird hochgezogen
console.log(x); // undefined
x = 10; // Zuweisung bleibt wo sie istconsole.log(y); // ❌ ReferenceError
let y = 10;
console.log(z); // ❌ ReferenceError
const z = 20;
// let/const haben "Temporal Dead Zone"Merke: Mit let/const keine Hoisting-Probleme!
📝 Quiz
Was gibt console.log(x); var x = 10; aus?
Variable Re-deklaration
// var: Erlaubt (verwirrend!)
var x = 1;
var x = 2; // ✅ Funktioniert
// let: NICHT erlaubt
let y = 1;
let y = 2; // ❌ SyntaxError
// const: NICHT erlaubt
const z = 1;
const z = 2; // ❌ SyntaxError
// ✅ ABER: Wert ändern mit let
let y = 1;
y = 2; // ✅ OKTemplate Literals (Template Strings)
Moderne String-Syntax mit Variables:
const name = 'Max';
const alter = 25;
// Alt: String-Konkatenation
console.log('Hallo, ich bin ' + name + ' und ' + alter + ' Jahre alt.');
// Neu: Template Literal (mit ` Backticks)
console.log(`Hallo, ich bin ${name} und ${alter} Jahre alt.`);
// Mehrzeilig
const message = `
Hallo ${name},
du bist ${alter} Jahre alt.
Willkommen!
`;
// Mit Berechnungen
console.log(`In 5 Jahren bin ich ${alter + 5} Jahre alt.`);Destructuring - Variables aus Arrays/Objects
// Array Destructuring
const zahlen = [1, 2, 3];
const [a, b, c] = zahlen;
console.log(a); // 1
console.log(b); // 2
// Object Destructuring
const person = {
name: 'Max',
alter: 25,
stadt: 'Berlin'
};
const { name, alter } = person;
console.log(name); // Max
console.log(alter); // 25📝 Quiz
Was macht const { name } = person;?
Praktische Beispiele
Beispiel 1: Counter
let count = 0; // Muss sich ändern → let
function increment() {
count++;
console.log('Count:', count);
}
function decrement() {
count--;
console.log('Count:', count);
}
increment(); // Count: 1
increment(); // Count: 2
decrement(); // Count: 1Beispiel 2: Konfiguration
// Konfiguration ändert sich nicht → const
const API_URL = 'https://api.example.com';
const MAX_RETRIES = 3;
const TIMEOUT = 5000;
// Nutzen
fetch(API_URL)
.then(...)
.catch(...);Beispiel 3: User-Daten
const user = {
name: 'Max',
age: 25,
email: 'max@example.com'
};
// Object-Properties ändern: OK mit const
user.age = 26;
user.city = 'Berlin';
console.log(user);
// { name: 'Max', age: 26, email: '...', city: 'Berlin' }Best Practices
✅ DO:
constals Standard nutzenletnur wenn nötig (Wert ändert sich)- Niemals
var(veraltet) - camelCase für Namen
- Aussagekräftige Namen
- Eine Deklaration pro Zeile
// ✅ GUT
const userName = 'Max';
const userAge = 25;
let loginCount = 0;
loginCount++;❌ DON'T:
- Nicht
varnutzen - Keine kryptischen Namen (
x,temp,data) - Keine globalen Variables ohne Grund
- Nicht mehrere in einer Zeile (schwer lesbar)
// ❌ SCHLECHT
var x = 1, y = 2, z = 3;
var temp = 'Max';
// ✅ BESSER
const firstName = 'Max';
const lastName = 'Mustermann';
const age = 25;Häufige Anfängerfehler
Fehler 1: const neu zuweisen
❌ FALSCH:
const pi = 3.14;
pi = 3.14159; // ❌ TypeError
✅ RICHTIG:
let pi = 3.14; // let wenn Wert sich ändert
pi = 3.14159; // ✅ OK
Fehler 2: Variable ohne let/const/var
❌ FALSCH:
name = 'Max'; // Wird global, ohne strict mode
✅ RICHTIG:
const name = 'Max';
Fehler 3: Scope-Probleme
❌ FALSCH:
if (true) {
let message = 'Hallo';
}
console.log(message); // ❌ Fehler
✅ RICHTIG:
let message;
if (true) {
message = 'Hallo';
}
console.log(message); // ✅ OK
📝 Quiz
Was ist der Hauptunterschied zwischen let und const?
TipsAndTricks
Tipps & Tricks
const als Standard-Wahl
Nutze immer const, außer du musst wirklich neu zuweisen:
// ✅ const für die meisten Fälle
const userName = 'Max';
const API_URL = 'https://api.example.com';
const users = []; // Array-Inhalt änderbar!
users.push('Max'); // OK mit const!
// ✅ let nur wenn Wert sich ändert
let count = 0;
count++;
// ❌ var niemals nutzen (veraltet)
Destructuring für mehrere Variablen
Extrahiere Werte elegant aus Arrays und Objects:
// Array Destructuring
const [firstName, lastName] = ['Max', 'Müller'];
// Object Destructuring
const user = { name: 'Max', age: 25 };
const { name, age } = user;
// Mit Default Values
const { name, city = 'Berlin' } = user;
// Variablen tauschen
let a = 1, b = 2;
[a, b] = [b, a]; // a=2, b=1
Template Literals für String-Building
Nutze Backticks statt String-Verkettung:
const name = 'Max';
const age = 25;
// ❌ Alt: Mit +
const text = 'Ich bin ' + name + ' und ' + age + ' Jahre alt';
// ✅ Neu: Template Literal
const text = `Ich bin ${name} und ${age} Jahre alt`;
// Mit Berechnungen
const text = `In 5 Jahren bin ich ${age + 5}`;
Object/Array Shorthand
Spare Code mit ES6 Shorthand:
const name = 'Max';
const age = 25;
// ❌ Alt: Redundant
const user = {
name: name,
age: age
};
// ✅ Neu: Shorthand
const user = { name, age };
// Auch bei Arrays
const arr = [name, age]; // ['Max', 25]
📝 Quiz
Welche Naming Convention nutzt man in JavaScript?
Übungsaufgaben
Zeit dein Wissen über Variablen zu testen!
Aufgabe 1: let vs const
Deklariere Variablen richtig: Name und Stadt mit const (ändern sich nicht), Alter mit let (kann sich ändern). Zeige alle in einem <p> Tag an.
Aufgabe 2: Template Literal
Nutze ein Template Literal (Backticks) um einen Satz zu erstellen: 'Ich bin Max, 25 Jahre alt und wohne in Berlin.'
Aufgabe 3: Variable neu zuweisen
Erstelle einen Counter der bei 0 startet. Bei Klick auf + soll er um 1 erhöht werden (Hint: Nutze let, nicht const!).
Nächste Schritte
Du kennst jetzt:
- ✅ let, const, var
- ✅ Unterschiede & wann was
- ✅ Scope (Block, Function, Global)
- ✅ Naming Conventions (camelCase)
- ✅ Template Literals
- ✅ Best Practices
Als Nächstes lernst du:
- Datentypen im Detail (String, Number, Boolean, etc.)
- Operatoren (+, -, *, /, ==, ===)
- Type Conversion & Coercion
Weiter so! 🚀
Gut gemacht! 🎉
Du hast "JavaScript Variables - let, const, var" abgeschlossen
Artikel bewerten
Bitte einloggen um zu bewerten
Das könnte dich auch interessieren
JavaScript Functions - Funktionen erklärt
Lerne JavaScript Functions: function declaration, arrow functions, parameters, return, scope, closures und Best Practices.
JavaScript Grundlagen: Deine erste Programmierung
Lerne JavaScript von Null! Variablen, Funktionen, Events - alles was du brauchst um interaktive Webseiten zu erstellen.
JavaScript Arrays - Listen & Array Methods
Lerne JavaScript Arrays: Erstellung, Zugriff, push, pop, map, filter, reduce, forEach, find, spread, destructuring und Best Practices.