JavaScript Hysing
Hys is JavaScript se verstekgedrag om verklarings na bo te skuif.
JavaScript-verklarings word opgehef
In JavaScript kan 'n veranderlike verklaar word nadat dit gebruik is.
Met ander woorde; 'n veranderlike kan gebruik word voordat dit verklaar is.
Voorbeeld 1 gee dieselfde resultaat as Voorbeeld 2 :
Voorbeeld 1
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare x
Voorbeeld 2
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
Om dit te verstaan, moet jy die term "hysing" verstaan.
Hys is JavaScript se verstekgedrag om alle verklarings na die bokant van die huidige omvang te skuif (na die bokant van die huidige skrif of die huidige funksie).
Die let en const Sleutelwoorde
Veranderlikes gedefinieer met let
en const
word na die bokant van die blok gehys, maar nie geïnisialiseer nie .
Betekenis: Die blok kode is bewus van die veranderlike, maar dit kan nie gebruik word voordat dit verklaar is nie.
Deur 'n let
veranderlike te gebruik voordat dit verklaar word, sal 'n
ReferenceError
.
Die veranderlike is in 'n "tydelike dooie sone" vanaf die begin van die blok totdat dit verklaar word:
Voorbeeld
Dit sal lei tot 'nReferenceError
:
carName = "Volvo";
let carName;
Om 'n const
veranderlike te gebruik voordat dit verklaar word, is 'n sintaksfout, so die kode sal eenvoudig nie loop nie.
Voorbeeld
Hierdie kode sal nie loop nie.
carName = "Volvo";
const carName;
Lees meer oor verhuur en konst in JS Let/Const .
JavaScript-initialisasies word nie opgehef nie
JavaScript lig slegs verklarings op, nie initialiserings nie.
Voorbeeld 1 gee nie dieselfde resultaat as Voorbeeld 2 nie :
Voorbeeld 1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
Voorbeeld 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
Maak dit sin dat y ongedefinieerd is in die laaste voorbeeld?
Dit is omdat slegs die verklaring (var y), nie die inisialisering (=7) na bo gehys word nie.
As gevolg van hysing is y verklaar voordat dit gebruik word, maar omdat initialisasies nie gehys word nie, is die waarde van y ongedefinieerd.
Voorbeeld 2 is dieselfde as om te skryf:
Voorbeeld
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
Verklaar jou veranderlikes aan die bokant!
Hys is (vir baie ontwikkelaars) 'n onbekende of oorgesien gedrag van JavaScript.
As 'n ontwikkelaar nie hysing verstaan nie, kan programme foute (foute) bevat.
Om foute te vermy, verklaar altyd alle veranderlikes aan die begin van elke omvang.
Aangesien dit is hoe JavaScript die kode interpreteer, is dit altyd 'n goeie reël.
JavaScript in streng modus laat nie toe dat veranderlikes gebruik word as hulle nie verklaar word nie.
Bestudeer "gebruik streng" in die volgende hoofstuk.