Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. undefined

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

undefined

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.

Die globale Eigenschaftundefined repräsentiert den primitiven Wertundefined. Es ist einer derprimitiven Typen von JavaScript.

Probieren Sie es aus

function test(t) {  if (t === undefined) {    return "Undefined value!";  }  return t;}let x;console.log(test(x));// Expected output: "Undefined value!"

Wert

Der primitive Wertundefined.

Eigenschaften vonundefined
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

undefined ist eine Eigenschaft desglobalen Objekts. Das heißt, es ist eine Variable im globalen Gültigkeitsbereich.

In allen nicht veralteten Browsern istundefined 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 Typundefined. Eine Funktion gibtundefined zurück, wenn kein Wertzurückgegeben wurde. Der Zugriff auf eine Eigenschaft, die nicht existiert, gibt ebenfallsundefined zurück. Dervoid-Operator gibt immerundefined zurück.

Hinweis:Während Sieundefined alsBezeichner (Variablenname) in jedem Gültigkeitsbereich außer dem globalen Gültigkeitsbereich verwenden können (daundefined keinreserviertes Wort ist), ist dies eine sehr schlechte Idee, die Ihren Code schwer wartbar und fehleranfällig macht.

js
// NICHT SO MACHEN(() => {  const undefined = "foo";  console.log(undefined, typeof undefined); // foo string})();((undefined) => {  console.log(undefined, typeof undefined); // foo string})("foo");

Beispiele

Strikte Gleichheit und undefined

Sie könnenundefined und die strikten Gleichheits- und Ungleichheitsoperatoren verwenden, um zu bestimmen, ob eine Variable einen Wert hat. Im folgenden Code ist die Variablex nicht initialisiert, und dieif-Anweisung evaluiert zu wahr.

js
let x;if (x === undefined) {  // these statements execute} else {  // these statements do not execute}

Hinweis:Derstrikte Gleichheitsoperator (im Gegensatz zumlockeren Gleichheitsoperator) muss hier verwendet werden, dax == undefined auch überprüft, obxnull ist, während dies bei strikter Gleichheit nicht der Fall ist. Dies liegt daran, dassnull nicht gleichundefined ist.

SieheGleichheitsvergleich und Gleichheit für Details.

typeof-Operator und undefined

typeof kann auch bestimmen, ob eine Variableundefined ist:

js
let x;if (typeof x === "undefined") {  // these statements execute}

Ein Grund,typeof zu nutzen, ist, dass es keinen Fehler auslöst, wenn die Variable im aktuellen Gültigkeitsbereich nicht existiert.

js
// x has not been declared before// evaluates to true without errorsif (typeof x === "undefined") {  // these statements execute}// Throws a ReferenceErrorif (x === undefined) {}

Es funktioniert auch mit Variablen, die mitvarnachdem die Prüfung erklärt wurden, da die Deklaration an die Spitze des Gültigkeitsbereichs mit dem Wertundefined gehoben wird.

js
if (typeof x === "undefined") {  // these statements execute}var x = 1;

Diese Technik ist normalerweise nur nützlich, um globale Variablen zu testen. Sie können wissen, ob eine Variable in jedem anderen Gültigkeitsbereich (Blöcke, Funktionen, Module, usw.) existiert, indem Sie einfach den Quellcode lesen. Der globale Gültigkeitsbereich ist an dasglobale Objekt gebunden, so dass die Existenz einer Variablen im globalen Kontext überprüft werden kann, indem die Existenz einer Eigenschaft auf demglobalen Objekt überprüft wird, z.B. durch denin-Operator:

js
if ("x" in window) {  // These statements execute only if x is defined globally}

Keiner der oben erwähnten Techniken funktioniert jedoch, wenn die Variable mitlet,const oder anderen lexikalischen Deklarationen deklariert wird. Die Verwendung vontypeof vor der Deklaration führt immer noch zu einemReferenceError, aufgrund derTemporal Dead Zone (TDZ).

js
if (typeof z === "undefined") {  // Uncaught ReferenceError: Cannot access 'z' before initialization}let z = 1;

Darüber hinaus erstellenlet undconst-Deklarationen keine Eigenschaften auf dem globalen Objekt, so dass sie auch nicht mit demin-Operator überprüft werden können.

js
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 möchten, ist es ratsamer,var zu verwenden oder sie explizit an das globale Objekt anzuhängen:

js
window.myGlobalVar = "foo";

void-Operator und undefined

Dervoid-Operator kann auch verwendet werden, um denundefined-Wert zu erzeugen. Dies ist sehr häufig in komprimiertem Code zu sehen, davoid 0 3 Bytes kürzer ist und nicht überschrieben werden kann. Sie sollten dieses Muster in Ihrem eigenen Code normalerweise vermeiden.

js
let x;if (x === void 0) {  // these statements execute}// y has not been declared beforeif (y === void 0) {  // throws Uncaught ReferenceError: y is not defined}

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-undefined

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp