EMZETT.
Login

Declaring Variables (Variablendeklaration)

Kurz: Der Vorgang, eine neue Variable mit Namen (und je nach Sprache Datentyp) bekanntzumachen, bevor sie benutzt werden kann.

Genauer: In statisch typisierten Sprachen (Java, C, C#) muss bei der Deklaration der Datentyp feststehen (z. B. int alter;), in dynamisch typisierten Sprachen (JavaScript, Python) reicht oft ein Schlüsselwort ohne Typ (let alter;). Deklaration (Variable bekanntmachen) und Initialisierung (ihr einen Startwert geben) können in einem Schritt oder getrennt passieren.

Im Detail

int alter;        // Deklaration ohne Initialisierung
alter = 30;        // Initialisierung in einem separaten Schritt
 
int groesse = 180; // Deklaration und Initialisierung in einem Schritt

Wird eine Variable in Java deklariert, aber nicht initialisiert, weist der Compiler bei lokalen Variablen (innerhalb einer Methode) einen Fehler zurück, sobald sie ohne vorherige Zuweisung gelesen wird — ein Sicherheitsnetz gegen den Zugriff auf undefinierten Speicher. Klassenfelder dagegen bekommen automatisch einen Default-Wert (0 bei Zahlen, false bei boolean, null bei Objekten), wenn keine explizite Initialisierung angegeben wird.

In dynamisch typisierten Sprachen wie JavaScript verschwimmt die Grenze zwischen Deklaration und erster Zuweisung stärker: let x; deklariert x mit dem Wert undefined, eine spätere x = 5; ist dann eine reine Zuweisung, keine erneute Deklaration. Manche Sprachen (z. B. Python) kennen gar keine explizite Deklaration — eine Variable entsteht dort einfach durch ihre erste Zuweisung.

Scope (Gültigkeitsbereich)

Wo eine Variable deklariert wird, bestimmt ihren Scope — den Bereich des Codes, in dem sie sichtbar und nutzbar ist. In Java und den meisten modernen Sprachen gilt Block-Scope: eine innerhalb einer { }-Klammer (z. B. einer if-Bedingung oder Schleife) deklarierte Variable existiert nur innerhalb dieses Blocks und ist danach nicht mehr zugänglich. Ältere JavaScript-Deklarationen mit var (im Gegensatz zu modernem let/const) folgten dagegen Funktions-Scope statt Block-Scope, was zu einer bekannten Klasse von Bugs führte — eine in einer Schleife mit var deklarierte Variable “leckte” ungewollt aus der Schleife heraus in den umgebenden Code, ein Verhalten, das viele Entwickler überraschte und einer der Hauptgründe für die Einführung von let/const in modernem JavaScript war.

Siehe auch: Identifiers, Constants (final), var-Keyword