Heim Web-Frontend js-Tutorial HUBEN IN JS (REFERENZFEHLER!!)

HUBEN IN JS (REFERENZFEHLER!!)

Dec 31, 2024 am 02:27 AM

HOISTING IN JS (REFERENCE ERROR!!)

Heben in JavaScript verstehen

Hoisting ist eines der grundlegendsten Konzepte in JavaScript, kann jedoch für Anfänger und sogar erfahrene Entwickler Verwirrung stiften.

In diesem Blog werden wir das Heben entmystifizieren, erklären, wie es funktioniert, und klare Beispiele bereitstellen, damit Sie dieses Konzept vollständig verstehen.

Was ist Heben?

Hoisting ist ein JavaScript-Mechanismus, bei dem Deklarationen von Variablen, Funktionen und Klassen während der Kompilierungsphase an den Anfang ihres Gültigkeitsbereichs verschoben werden.

Das bedeutet, dass Sie diese Elemente verwenden können, bevor sie tatsächlich im Code deklariert werden.

Das Hochziehen funktioniert jedoch für var, let, const, Funktionen und Klassen anders, und hier kommt es oft zu Verwirrung

Wie das Heben funktioniert

Wenn JavaScript-Code ausgeführt wird, durchläuft er zwei Phasen:

  1. Kompilierungsphase: Während dieser Phase hebt die Engine Deklarationen an die Spitze ihres Gültigkeitsbereichs.

  2. Ausführungsphase: Der Code wird Zeile für Zeile ausgeführt und berücksichtigt dabei die Heberegeln.

Heberegeln für verschiedene Deklarationen

1. var

Mit var deklarierte Variablen werden angehoben, ihr Wert wird jedoch nicht initialisiert. Vor der Initialisierung werden sie auf undefiniert gesetzt.

console.log(a); // Output: undefined
var a = 10;
console.log(a); // Output: 10
Nach dem Login kopieren
  1. let und const

Variablen, die mit let und const deklariert wurden, werden ebenfalls angehoben, bleiben aber in der Temporal Dead Zone (TDZ). Auf sie kann erst zugegriffen werden, wenn ihre Deklaration im Code gefunden wird.

console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 20;

Nach dem Login kopieren
console.log(c); // ReferenceError: Cannot access 'c' before initialization
const c = 30;
Nach dem Login kopieren
  1. Funktionen

Funktionsdeklarationen werden vollständig angehoben, was bedeutet, dass sowohl ihr Name als auch ihr Text nach oben verschoben werden. Dadurch können Sie Funktionen aufrufen, bevor sie deklariert werden.

greet(); // Output: "Hello, World!"

function greet() {
    console.log("Hello, World!");
}

Nach dem Login kopieren

Funktionsausdrücke werden jedoch unterschiedlich behandelt. Sie verhalten sich wie Variablen, die mit var, let oder const:
deklariert wurden

sayHi(); // ReferenceError: Cannot access 'sayHi' before initialization

const sayHi = function () {
    console.log("Hi!");
};
Nach dem Login kopieren
  1. Kurse

Klassen werden angehoben, bleiben aber in der Temporal Dead Zone, ähnlich wie let und const. Sie können nicht auf eine Klasse zugreifen, bevor sie deklariert wurde.

const obj = new MyClass(); // ReferenceError: Cannot access 'MyClass' before initialization

class MyClass {
    constructor() {
        this.name = "Class";
    }
}
Nach dem Login kopieren

Die Temporal Dead Zone (TDZ) verstehen

Die zeitliche Totzone ist der Zeitraum zwischen dem Beginn des Bereichs und dem Punkt, an dem die Variable deklariert wird. Während dieses Zeitraums löst jeder Zugriff auf let- oder const-Variablen einen ReferenceError aus.

Key Takeaways

Declaration   Hoisted?       Behavior Before Initialization

var            Yes              undefined

let            Yes            ReferenceError (in TDZ)

const          Yes             ReferenceError (in TDZ)

Function Declaration  Yes       Fully hoisted, works before 
declaration

Function Expression  Partially (as var)   undefined or ReferenceError (if let/const)

Class           Yes              ReferenceError (in TDZ)
Nach dem Login kopieren

Fazit

Das Verständnis des Hebens ist entscheidend für das Schreiben von sauberem und vorhersehbarem JavaScript-Code. Auch wenn es auf den ersten Blick magisch erscheinen mag, hilft Ihnen die Kenntnis der Regeln für var, let, const, Funktionen und Klassen dabei, häufige Fallstricke zu vermeiden. Deklarieren Sie Ihre Variablen und Funktionen immer am Anfang ihres Gültigkeitsbereichs, um Klarheit zu gewährleisten und die Fehlerwahrscheinlichkeit zu verringern.

Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonHUBEN IN JS (REFERENZFEHLER!!). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

Ersetzen Sie Stringzeichen in JavaScript

Benutzerdefinierte Google -Search -API -Setup -Tutorial Benutzerdefinierte Google -Search -API -Setup -Tutorial Mar 04, 2025 am 01:06 AM

Benutzerdefinierte Google -Search -API -Setup -Tutorial

Beispielfarben JSON -Datei Beispielfarben JSON -Datei Mar 03, 2025 am 12:35 AM

Beispielfarben JSON -Datei

8 atemberaubende JQuery -Seiten -Layout -Plugins 8 atemberaubende JQuery -Seiten -Layout -Plugins Mar 06, 2025 am 12:48 AM

8 atemberaubende JQuery -Seiten -Layout -Plugins

10 JQuery Syntax Highlighters 10 JQuery Syntax Highlighters Mar 02, 2025 am 12:32 AM

10 JQuery Syntax Highlighters

Erstellen Sie Ihre eigenen AJAX -Webanwendungen Erstellen Sie Ihre eigenen AJAX -Webanwendungen Mar 09, 2025 am 12:11 AM

Erstellen Sie Ihre eigenen AJAX -Webanwendungen

Was ist ' this ' in JavaScript? Was ist ' this ' in JavaScript? Mar 04, 2025 am 01:15 AM

Was ist ' this ' in JavaScript?

10 JavaScript & JQuery MVC -Tutorials 10 JavaScript & JQuery MVC -Tutorials Mar 02, 2025 am 01:16 AM

10 JavaScript & JQuery MVC -Tutorials

See all articles