| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/undefined | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Die globale Eigenschaft undefined reprsentiert den primitiven Wert undefined. Es ist einer der primitiven Typen von JavaScript.
function test(t) {
if (t === undefined) {
return "Undefined value!";
}
return t;
}
let x;
console.log(test(x));
// Expected output: "Undefined value!"
Der primitive Wert undefined.
Eigenschaften von undefined | |
|---|---|
| Schreibbar | nein |
| Aufzhlbar | nein |
| Konfigurierbar | nein |
undefined ist eine Eigenschaft des globalen Objekts. Das heit, es ist eine Variable im globalen Gltigkeitsbereich.
In allen nicht veralteten Browsern ist undefined eine nicht konfigurierbare, nicht beschreibbare Eigenschaft. Auch wenn dies nicht der Fall ist, sollten Sie es vermeiden, es zu berschreiben.
Eine Variable, der kein Wert zugewiesen wurde, ist vom Typ undefined. Eine Funktion gibt undefined zurck, wenn kein Wert zurckgegeben wurde. Der Zugriff auf eine Eigenschaft, die nicht existiert, gibt ebenfalls undefined zurck. Der void-Operator gibt immer undefined zurck.
Hinweis:
Whrend Sie undefined als Bezeichner (Variablenname) in jedem Gltigkeitsbereich auer dem globalen Gltigkeitsbereich verwenden knnen (da undefined kein reserviertes Wort ist), ist dies eine sehr schlechte Idee, die Ihren Code schwer wartbar und fehleranfllig macht.
// NICHT SO MACHEN
(() => {
const undefined = "foo";
console.log(undefined, typeof undefined); // foo string
})();
((undefined) => {
console.log(undefined, typeof undefined); // foo string
})("foo");
Sie knnen undefined und die strikten Gleichheits- und Ungleichheitsoperatoren verwenden, um zu bestimmen, ob eine Variable einen Wert hat. Im folgenden Code ist die Variable x nicht initialisiert, und die if-Anweisung evaluiert zu wahr.
let x;
if (x === undefined) {
// these statements execute
} else {
// these statements do not execute
}
Hinweis:
Der strikte Gleichheitsoperator (im Gegensatz zum lockeren Gleichheitsoperator) muss hier verwendet werden, da x == undefined auch berprft, ob x null ist, whrend dies bei strikter Gleichheit nicht der Fall ist. Dies liegt daran, dass null nicht gleich undefined ist.
Siehe Gleichheitsvergleich und Gleichheit fr Details.
typeof kann auch bestimmen, ob eine Variable undefined ist:
let x;
if (typeof x === "undefined") {
// these statements execute
}
Ein Grund, typeof zu nutzen, ist, dass es keinen Fehler auslst, wenn die Variable im aktuellen Gltigkeitsbereich nicht existiert.
// x has not been declared before
// evaluates to true without errors
if (typeof x === "undefined") {
// these statements execute
}
// Throws a ReferenceError
if (x === undefined) {
}
Es funktioniert auch mit Variablen, die mit var nachdem die Prfung erklrt wurden, da die Deklaration an die Spitze des Gltigkeitsbereichs mit dem Wert undefined gehoben wird.
if (typeof x === "undefined") {
// these statements execute
}
var x = 1;
Diese Technik ist normalerweise nur ntzlich, um globale Variablen zu testen. Sie knnen wissen, ob eine Variable in jedem anderen Gltigkeitsbereich (Blcke, Funktionen, Module, usw.) existiert, indem Sie einfach den Quellcode lesen. Der globale Gltigkeitsbereich ist an das globale Objekt gebunden, so dass die Existenz einer Variablen im globalen Kontext berprft werden kann, indem die Existenz einer Eigenschaft auf dem globalen Objekt berprft wird, z.B. durch den in-Operator:
if ("x" in window) {
// These statements execute only if x is defined globally
}
Keiner der oben erwhnten Techniken funktioniert jedoch, wenn die Variable mit let, const oder anderen lexikalischen Deklarationen deklariert wird. Die Verwendung von typeof vor der Deklaration fhrt immer noch zu einem ReferenceError, aufgrund der Temporal Dead Zone (TDZ).
if (typeof z === "undefined") {
// Uncaught ReferenceError: Cannot access 'z' before initialization
}
let z = 1;
Darber hinaus erstellen let und const-Deklarationen keine Eigenschaften auf dem globalen Objekt, so dass sie auch nicht mit dem in-Operator berprft werden knnen.
let z;
if ("z" in window) {
// false, even if z is declared globally with let or const
}
Wenn Sie globale Variablen ber verschiedene Skripte hinweg teilen mchten, ist es ratsamer, var zu verwenden oder sie explizit an das globale Objekt anzuhngen:
window.myGlobalVar = "foo";
Der void-Operator kann auch verwendet werden, um den undefined-Wert zu erzeugen. Dies ist sehr hufig in komprimiertem Code zu sehen, da void 0 3 Bytes krzer ist und nicht berschrieben werden kann. Sie sollten dieses Muster in Ihrem eigenen Code normalerweise vermeiden.
let x;
if (x === void 0) {
// these statements execute
}
// y has not been declared before
if (y === void 0) {
// throws Uncaught ReferenceError: y is not defined
}
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-undefined |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |