English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript Grundtutorials

JavaScript Objekt

JavaScript Funktion

JS HTML DOM

JS Browser BOM

AJAX Grundtutorials

JavaScript Referenzhandbuch

Hoisting in JavaScript

In JavaScript werden alle Variablen- und Funktionsdeklarationen, egal wo sie definiert sind, nach oben oder angehoben bis zu dem aktuellen Bereich. Dies ist das Standardverhalten des JavaScript-Interpreters und wirdhoisting(Anheben).

Funktionshinaufführen (Hoisting)

Funktionen, die mit der Funktionsdeklaration definiert werden, werden automatisch gehoben.

Das bedeutet, dass sie vor ihrer Definition aufgerufen werden können.

// Funktion vor der Deklaration aufrufen
greet();
function greet() {
  document.getElementById("output").innerHTML = "Hello World";
}
Testen Sie heraus‹/›

Wie Sie sehen können, haben wir vor der Definition bereitsgreet()Funktion, aber der Code ist immer noch gültig. Dies liegt daran, dass die Funktionsdeklarationen im Hintergrund automatisch nach oben bewegt werden.

Das Hinaufführen ist das Standardverhalten von JavaScript, die Deklarationen nach oben zu bewegen.

JavaScript hebt nur die Deklarationen auf

JavaScript hebt nur die Deklarationen auf, nicht die Initialisierung. Wenn eine Variable nach ihrer Verwendung deklariert und initialisiert wurde, ist der Wert unbestimmt.

document.write(num);  // undefined 
var num;
num = 50;
Testen Sie heraus‹/›

Wenn eine Variable nach ihrer Verwendung deklariert wird, aber vorher initialisiert wurde, gibt sie diesen Wert zurück:

num = 50;
document.write(num);  // 50
var num;
Testen Sie heraus‹/›

mitletoderconstNicht deklarierte Variablen und Konstanten.

Nicht gehoisted JavaScript Initialisierung

JavaScript hoists nur die Deklarationen und nicht die Initialisierungen.

Die folgenden beiden Beispiele erzeugen unterschiedliche Ergebnisse:

Beispiel1:
var x = 1;   // Initialisierung von x
var y = 2;   // Initialisierung von y
document.write(x + " " + y); // 1 2
Testen Sie heraus‹/›
Beispiel2:
var x = 1;   // Initialisierung von x
document.write(x + " " + y); // 1 undefined
var y = 2;   // Initialisierung von y
Testen Sie heraus‹/›

inBeispiel2inEs wird nur die Deklaration (var y) und nicht die Initialisierung (=) 2wird nach oben gehoisted.

Durch das Hoisting wurde y vor der Verwendung von y deklariert, aber da die Initialisierung nicht gehoist wurde, ist der Wert von y nicht definiert.

Der obige Beispiel wird implizit als follows verstanden:

var x; // Deklaration von x
var y; // Deklaration von y
// Ende des Hoistings.
x = 1; // Initialisierung von x
document.write(x + " " + y);  // 1 undefined
y = 2; // Initialisierung von y
Testen Sie heraus‹/›

Deklarieren Sie immer Variablen am Anfang

Hoisting ist das unbekannte oder ignorierte Verhalten von JavaScript.

Wenn Sie das Hoisting nicht verstehen, könnte das Programm Fehler enthalten.

Um Fehler zu vermeiden, sollten Sie immer alle Variablen am Anfang jeder Funktion deklarieren.

Hinweis:Im strengen Modus erlaubt JavaScript keine Variablen, die nicht deklariert wurden.

Sie werden im nächsten Kapitel mehr über "use strict" erfahren.