Variable undefiniert

Variablen werden deklariert und initialisiert.

// Deklaration und Initialisierung
let x = 1;

Man kann eine Variable aber auch deklarieren und ihr später einen Wert zuweisen.

let x; // Deklaration
x = 1; // Initialisierung

Variablen, die nicht initialisiert wurden, haben den Wert undefined (engl.: nicht definiert).

Nicht initialisierte Variablen können auch bei Funktionsaufrufen vorkommen. Ruft man eine Funktion, die einen Parameter erwartet, ohne Argument auf, dann erhält der Funktionsparameter den Wert undefined.

function echo(x) {
  return x;
}

// Aufruf ohne Argument
let y = echo();

echo wird ohne Argument aufgerufen. Dem Parameter x wird so kein Wert zugewiesen, er erhält den Wert undefined. Da echo den Parameter x einfach zurückgibt, erhält auch y den Wert undefined.

Eine Funktion, die einen Parameter erwartet, kann immer auch ohne Argument aufgerufen werden. Man sollte sich beim Schreiben von Funktionen immer überlegen, was in diesem Fall passieren soll. Gute Praxis ist es, in einem solchen Fall dem Parameter einen Default-Wert (engl.: Vorgabe) zuzuweisen. Das hatten wir schon bei der String-Methode charAt(index) kennengelernt. Normalerweise gibt diese Methode das Zeichen an der Stelle index zurück. Rufen wir charAt ohne Argument auf, erhält index den Default 0. Es wird das Zeichen an der Stelle 0 zurückgegeben.

Um eine deklarierte Varaible auf undefined zu überprüfen, verwendet man wie üblich die strikte Gleichkeit. Die Methode charAt könnte also folgenden Code-Ausschnitt enthalten:

if (index === undefined) {
  index = 0;
}

Eine Variable, die nicht mit einem Wert beschrieben wurde, ist vom Typ undefined. Methoden oder Anweisungen geben ebenfalls undefined zurück, wenn eine Variable, die ausgewertet wird, mit keinem Wert beschrieben ist. Eine Funktion hat undefined als Rückgabewert, wenn kein Wert zurückgegeben wird.

Nicht initialisierte Variablen können auch bei Funktionsaufrufen vorkommen. Ruft man eine Funktion, die einen Parameter erwartet, ohne Argument auf, dann erhält der Funktionsparameter den Wert undefined.

function echo(x) {
  return x;
}

// Aufruf ohne Argument
let y = echo();

echo wird ohne Argument aufgerufen. Dem Parameter x wird so kein Wert zugewiesen, er erhält den Wert undefined. Da echo den Parameter x einfach zurückgibt, erhält auch y den Wert undefined.

Über === undefined kann überprüft werden ob eine Variable undefiniert ist und ggf. entspechende Aktionen veranlassen.