undefined

Die globale Eigenschaft undefined repr├Ąsentiert den Wert undefined . Dieser Wert ist einer der primitiven Typen in JavaScript.

Eigenschaftsattribute von undefined
Schreibbar nein
Aufz├Ąhlbar nein
Konfigurierbar nein

Syntax

undefined

Beschreibung

undefined ist eine Eigenschaft des globalen Objektes, was bedeutet, dass es eine Variable im globalen G├╝ltigkeitsbereich ist. Der initiale Wert von undefined ist der primitive Wert undefined.

In modernen Browsern (JavaScript 1.8.5 / Firefox 4+) ist undefined  eine nicht konfigurierbare und nicht beschreibbare Eigenschaft. Dieses ist in der ECMAScript 5 Spezifikation definiert. Immer wenn das nicht der Fall ist, sollte das ├ťberschreiben von undefined  unterlassen werden.

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.

Weil es m├Âglich ist Bezeichner (Variablennamen) in jedem anderen Scope anders zu definieren, ist es auch m├Âglich undefined neu zu defnieren (weil undefined kein reserviertes Schl├╝sselwort) ist). Dieses einzusetzen ist jedoch keine gute Idee, weil der Quelltext dadurch schwer zu verstehen ist.

// NICHT NACHMACHEN

// gibt "foo string" aus
(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })();

// gibt "foo string" aus
(function(undefined){ console.log(undefined, typeof undefined); })('foo');

Beispiele

Identit├Ąt und undefined

Man kann undefined in Verbindung mit dem strikten Gleichheitsoperator nutzen, um den Wert von Variablen auf undefined zu pr├╝fen. Im folgenden Beispiel ist die Variable x nicht definiert und die if-Anweisung wird zu true ausgewertet.

var x;
if (x === undefined) {
   // Diese Anweisung wird ausgef├╝hrt
}
else {
   // Diese Anweisung wird nicht ausgef├╝hrt
}
Hinweis: Der strikte Gleichheitsoperator muss statt dem Standard-Gleichheitsoperator benutzt werden, weil x == undefined auch pr├╝ft, ob x null ist, was bei strikter Gleichheit nicht so ist. null ist nicht ├Ąquivalent zu undefined F├╝r Details siehe Vergleichsoperatoren

Typeof Operator und undefined

Alternativ kann typeof eingesetzt werden:

var x;
if (typeof x === 'undefined') {
   // Diese Anweisung wird ausgef├╝hrt
}

Ein Grund typeof zu nutzen, ist, dass diese Variante keinen Fehler erzeugt, wenn eine Variable nicht definiert ist.

// x wurde nicht definiert
if (typeof x === 'undefined') { // wird ohne Fehler zu true ausgewertet
   // Diese Anweisung wird ausgef├╝hrt
}

if(x === undefined){ // erzeugt einen ReferenceError

}

Diese Technik sollte so oft es geht vermieden werden. JavaScript ist eine Sprache mit statischen G├╝ltigkeitsbereichen, was bedeutet, dass eine Variable immer in seinem geschlossenen Kontext gelesen werden kann, egal ob sie existiert oder nicht. Die einzige Ausnahme ist der globale G├╝ltigkeitsbereich, jedoch ist dieser an das globale Objekt gebunden, weshalb die Existenz einer Variablen auf dem globalen Objekt gepr├╝ft werden kann. Daf├╝r kann der in-Operator genutzt werden.

Void Operator und undefined

Der void-Operator ist die dritte Alternative.

var x;
if (x === void 0) {
   // Diese Anweisung wird ausgef├╝hrt
}

// y wurde nicht definiert
if (y === void 0) {
   // erzeugt einen ReferenceError (im gegensatz zu `typeof`)
}

Spezifikationen

Browserkompatibilit├Ąt

BCD tables only load in the browser