JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


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 leten constword 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 letveranderlike 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 'n ReferenceError:
carName = "Volvo";
let carName;

Om 'n constveranderlike 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.