JavaScript Hoisting
- Vorige pagina JS scope
- Volgende pagina JS strict mode
Hoisting is het standaardgedrag van JavaScript om verklaringen naar de top te verplaatsen.
JavaScript-verklaringen worden opgehaald
In JavaScript kun je een variabele declareren voordat je deze gebruikt.
In andere woorden, je kunt het gebruiken voordat je het hebt verklaard.
Voorbeeld 1 metVoorbeeld 2 het resultaat is hetzelfde:
Voorbeeld 1
x = 5; // 5 toekennen aan x elem = document.getElementById("demo"); // Zoek element elem.innerHTML = x; // Toon x in het element var x; // Verklaren x
Voorbeeld 2
var x; // Verklaren x x = 5; // 5 toekennen aan x elem = document.getElementById("demo"); // Zoek element elem.innerHTML = x; // Toon x in het element
Om dit te begrijpen, moet je het begrip 'hoisting' begrijpen.
Hoisting is het standaardgedrag van JavaScript om alle verklaringen naar de top van de huidige scope te verplaatsen (naar de top van het huidige script of de huidige functie).
de let- en const-sleutels
met let
of const
De variabelen en constants die zijn verklaard, worden niet opgehaald!
Raadpleeg JS Let / Const Lees meer over let en const in de documentatie.
Initialisaties van JavaScript worden niet opgehaald
JavaScript haalt alleen verklaringen op, niet initialisaties.
Voorbeeld 1 metVoorbeeld 2 het resultaat is verschillend:
Voorbeeld 1
var x = 5; // Initialiseer x var y = 7; // Initialisatie van y elem = document.getElementById("demo"); // Zoek element elem.innerHTML = x + " " + y; // Toon x en y
Voorbeeld 2
var x = 5; // Initialiseer x elem = document.getElementById("demo"); // Zoek element elem.innerHTML = x + " " + y; // Toon x en y var y = 7; // Initialisatie van y
Is het logisch dat y in het laatste voorbeeld nog steeds ongedefinieerd is?
Dit komt omdat alleen de verklaring (var y) en niet de initialisatie (=7) naar boven zijn gehesen.
Vanwege hoisting is y al voor gebruik gedeclareerd, maar omdat de initialisatie niet is opgehoogd, blijft de waarde van y ongedefinieerd.
Voorbeeld 2 is ook hetzelfde:
Voorbeeld
var x = 5; // Initialiseer x var y; // Declareer y elem = document.getElementById("demo"); // Zoek element elem.innerHTML = x + " " + y; // Toon x en y y = 7; // Geef 7 toe aan y
宣明您的变量在顶部!
Hoisting (voor veel ontwikkelaars) is een onbekend of genegeerd gedrag van JavaScript.
Als ontwikkelaars het concept hoisting niet begrijpen, kan het programma bugs bevatten (fouten).
Om bugs te vermijden, verklaren alle variabelen altijd aan het begin van elke scope.
Omdat dit de manier is waarop JavaScript code interpreteert, hou deze gewoonte in stand.
Strict mode in JavaScript staat het gebruik van variabelen zonder verklaring niet toe.
Leer meer in het volgende hoofdstuk:use strict"
- Vorige pagina JS scope
- Volgende pagina JS strict mode