Mit Hoisting (engl., Hochziehen) bezeichnet man das Verhalten des JavaScript-Interpreters bei der Deklaration von Variablen und Funktionen in Funktionen. Stößt der JavaScript-Interpreter auf eine Funktion, so überprüft er zunächst in der gesamten Funktion, welche Variablen im lokalen Gültigkeitsbereich der Funktion definiert werden und welche global definiert wurden. Werden Variablendefinitionen mit lokalem Gültigkeitsbereich gefunden, so werden diese gleich deklariert, nicht aber initialisiert. Der JavaScript-Interpreter "zieht" also sämtliche Deklarationen von Variablen im Funktionsrumpf gleich unterhalb des Kopfes der Funktion hoch (Hoisting). Die Zuweisung findet aber erst an jenen Stellen statt, wo die Variablen definiert sind.

Property Value
dbo:abstract
  • Mit Hoisting (engl., Hochziehen) bezeichnet man das Verhalten des JavaScript-Interpreters bei der Deklaration von Variablen und Funktionen in Funktionen. Stößt der JavaScript-Interpreter auf eine Funktion, so überprüft er zunächst in der gesamten Funktion, welche Variablen im lokalen Gültigkeitsbereich der Funktion definiert werden und welche global definiert wurden. Werden Variablendefinitionen mit lokalem Gültigkeitsbereich gefunden, so werden diese gleich deklariert, nicht aber initialisiert. Der JavaScript-Interpreter "zieht" also sämtliche Deklarationen von Variablen im Funktionsrumpf gleich unterhalb des Kopfes der Funktion hoch (Hoisting). Die Zuweisung findet aber erst an jenen Stellen statt, wo die Variablen definiert sind. var s = "hallo"; // globale Variablefunction foo() { document.write(s); // ergibt "undefined" und nicht "hallo" var s = "test"; // Initialisierung von 's' document.write(s); // ergibt "test"}foo(); Der obenstehende Code wird vom JavaScript-Interpreter so ausgeführt, als wäre Untenstehendes definiert worden: var s = "hallo"; // globale Variablefunction foo() { var s; // Hoisting von s, das global definierte s wird damit überdeckt document.write(s); // ergibt "undefined" - jetzt wird auch klar, warum! s = "test"; // Zuweisung document.write(s); // ergibt "test"}foo(); Ebenso werden die Deklaration von Funktionen nach vorne gezogen, wie das untenstehende Beispiel zeigt. Der Javascript-Interpreter schiebt die Deklaration und Implementierung(!) der Funktionsdefinition von foo ganz an den Anfang, sodass foo() sogar aufgerufen werden kann! Die Deklaration von bar wird ebenso an den Anfang verschoben, nicht hingegen die Implementierung der anonymen Funktion. Daher löst bar() einen Fehler aus. document.write(typeof foo); // ergibt "function"foo(); // wird daher ausgeführtdocument.write(typeof bar); // ergibt wieder "undefined" - siehe obiges Beispiel!bar(); // löst daher einen Fehler ausfunction foo() {}; // Funktionsdefinition - Hoisting von Deklaration und Implementierungvar bar = function () {}; // literale Definition - nur Hoisting der Deklaration Diesen Umstand kann man bei der Aufnahme von Unterfunktionen nutzen, indem man diese unterhalb der abschließendes return-Anweisung definiert. function f(x) { var y = foo(x); // Hoisting von foo return y; // abschließendes return function foo(z) {return z*z}; // Funktionsdefinition unterhalb von return}f(2); // ergibt 4 Hoisting tritt nicht nur innerhalb von Funktionen, sondern auch im globalen Kontext auf, jedoch sollte man die globale Definition von Variablen vermeiden. (de)
  • Mit Hoisting (engl., Hochziehen) bezeichnet man das Verhalten des JavaScript-Interpreters bei der Deklaration von Variablen und Funktionen in Funktionen. Stößt der JavaScript-Interpreter auf eine Funktion, so überprüft er zunächst in der gesamten Funktion, welche Variablen im lokalen Gültigkeitsbereich der Funktion definiert werden und welche global definiert wurden. Werden Variablendefinitionen mit lokalem Gültigkeitsbereich gefunden, so werden diese gleich deklariert, nicht aber initialisiert. Der JavaScript-Interpreter "zieht" also sämtliche Deklarationen von Variablen im Funktionsrumpf gleich unterhalb des Kopfes der Funktion hoch (Hoisting). Die Zuweisung findet aber erst an jenen Stellen statt, wo die Variablen definiert sind. var s = "hallo"; // globale Variablefunction foo() { document.write(s); // ergibt "undefined" und nicht "hallo" var s = "test"; // Initialisierung von 's' document.write(s); // ergibt "test"}foo(); Der obenstehende Code wird vom JavaScript-Interpreter so ausgeführt, als wäre Untenstehendes definiert worden: var s = "hallo"; // globale Variablefunction foo() { var s; // Hoisting von s, das global definierte s wird damit überdeckt document.write(s); // ergibt "undefined" - jetzt wird auch klar, warum! s = "test"; // Zuweisung document.write(s); // ergibt "test"}foo(); Ebenso werden die Deklaration von Funktionen nach vorne gezogen, wie das untenstehende Beispiel zeigt. Der Javascript-Interpreter schiebt die Deklaration und Implementierung(!) der Funktionsdefinition von foo ganz an den Anfang, sodass foo() sogar aufgerufen werden kann! Die Deklaration von bar wird ebenso an den Anfang verschoben, nicht hingegen die Implementierung der anonymen Funktion. Daher löst bar() einen Fehler aus. document.write(typeof foo); // ergibt "function"foo(); // wird daher ausgeführtdocument.write(typeof bar); // ergibt wieder "undefined" - siehe obiges Beispiel!bar(); // löst daher einen Fehler ausfunction foo() {}; // Funktionsdefinition - Hoisting von Deklaration und Implementierungvar bar = function () {}; // literale Definition - nur Hoisting der Deklaration Diesen Umstand kann man bei der Aufnahme von Unterfunktionen nutzen, indem man diese unterhalb der abschließendes return-Anweisung definiert. function f(x) { var y = foo(x); // Hoisting von foo return y; // abschließendes return function foo(z) {return z*z}; // Funktionsdefinition unterhalb von return}f(2); // ergibt 4 Hoisting tritt nicht nur innerhalb von Funktionen, sondern auch im globalen Kontext auf, jedoch sollte man die globale Definition von Variablen vermeiden. (de)
dbo:wikiPageID
  • 6865467 (xsd:integer)
dbo:wikiPageRevisionID
  • 133143337 (xsd:integer)
dct:subject
rdfs:comment
  • Mit Hoisting (engl., Hochziehen) bezeichnet man das Verhalten des JavaScript-Interpreters bei der Deklaration von Variablen und Funktionen in Funktionen. Stößt der JavaScript-Interpreter auf eine Funktion, so überprüft er zunächst in der gesamten Funktion, welche Variablen im lokalen Gültigkeitsbereich der Funktion definiert werden und welche global definiert wurden. Werden Variablendefinitionen mit lokalem Gültigkeitsbereich gefunden, so werden diese gleich deklariert, nicht aber initialisiert. Der JavaScript-Interpreter "zieht" also sämtliche Deklarationen von Variablen im Funktionsrumpf gleich unterhalb des Kopfes der Funktion hoch (Hoisting). Die Zuweisung findet aber erst an jenen Stellen statt, wo die Variablen definiert sind. (de)
  • Mit Hoisting (engl., Hochziehen) bezeichnet man das Verhalten des JavaScript-Interpreters bei der Deklaration von Variablen und Funktionen in Funktionen. Stößt der JavaScript-Interpreter auf eine Funktion, so überprüft er zunächst in der gesamten Funktion, welche Variablen im lokalen Gültigkeitsbereich der Funktion definiert werden und welche global definiert wurden. Werden Variablendefinitionen mit lokalem Gültigkeitsbereich gefunden, so werden diese gleich deklariert, nicht aber initialisiert. Der JavaScript-Interpreter "zieht" also sämtliche Deklarationen von Variablen im Funktionsrumpf gleich unterhalb des Kopfes der Funktion hoch (Hoisting). Die Zuweisung findet aber erst an jenen Stellen statt, wo die Variablen definiert sind. (de)
rdfs:label
  • Hoisting (de)
  • Hoisting (de)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is foaf:primaryTopic of