JS-zelfstudie

JS HOME JS Introductie JS Waarheen? JS-uitgang JS-verklaringen JS-syntaxis JS-opmerkingen JS-variabelen JS Let JS Const JS-operators JS Rekenen JS-opdracht JS-gegevenstypen JS-functies JS-objecten JS-evenementen JS-snaren JS String-methoden JS String zoeken JS String-sjablonen JS-nummers JS-nummermethoden JS-arrays JS-array-methoden JS-array sorteren JS-array-iteratie JS Array Const JS-datums JS-datumnotaties JS Datum Ophaalmethoden Methoden voor het instellen van JS-datum JS Math JS Willekeurig JS Booleans JS-vergelijkingen JS-voorwaarden JS-schakelaar JS Loop For JS-lus voor binnen JS Loop For Of JS-lus terwijl JS Break JS-iteraties JS-sets JS-kaarten JS Typeof JS Type conversie JS Bitwise JS RegExp JS-fouten JS-bereik JS Hijsen JS strikte modus JS dit trefwoord JS-pijlfunctie JS-lessen JS JSON JS-foutopsporing JS-stijlgids JS-best practices JS-fouten JS-prestaties JS Gereserveerde Woorden

JS-versies

JS-versies JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS-geschiedenis

JS-objecten

Objectdefinities Objecteigenschappen Objectmethoden Objectweergave Objectaccessoires Objectconstructeurs Objectprototypes Object-Iterables Objectsets Objectkaarten Objectreferentie

JS-functies

Functiedefinities Functieparameters: Functie-aanroep Functie-oproep: Functie Toepassen Functie Sluitingen

JS-lessen

Klas Intro Klasse Overerving Klasse Statisch

JS Asynchrone

JS-callbacks JS asynchroon JS belooft JS Async/Wachten

JS HTML DOM

DOM Intro DOM-methoden DOM-document DOM-elementen DOM HTML DOM-formulieren DOM-CSS DOM-animaties DOM-evenementen DOM-gebeurtenisluisteraar DOM-navigatie DOM-knooppunten DOM-collecties DOM-knooppuntlijsten

JS-browserstuklijst

JS-venster JS-scherm JS-locatie JS-geschiedenis JS-navigator JS pop-upwaarschuwing JS-timing JS-koekjes

JS Web API's

Introductie web-API Web Forms API Webgeschiedenis-API Webopslag-API Web Worker-API Web Fetch-API Webgeolocatie-API

JS AJAX

Ajax-intro AJAX XMLHttp Ajax-verzoek Ajax-reactie AJAX XML-bestand AJAX PHP Ajax ASP AJAX-database AJAX-toepassingen Ajax-voorbeelden

JS JSON

JSON-intro JSON-syntaxis JSON versus XML JSON-gegevenstypen JSON ontleden JSON Stringify JSON-objecten JSON-arrays JSON-server JSON PHP JSON HTML JSON JSONP

JS versus jQuery

jQuery-kiezers jQuery HTML jQuery CSS jQuery DOM

JS-graphics

JS-graphics JS Canvas JS Plotly JS Chart.js JS Google-kaart JS D3.js

JS-voorbeelden

JS-voorbeelden JS HTML DOM JS HTML-invoer JS HTML-objecten JS HTML-evenementen JS-browser JS-editor JS-oefeningen JS-quiz JS-certificaat

JS-referenties

JavaScript-objecten HTML DOM-objecten


JavaScript hijsen


Hijsen is het standaardgedrag van JavaScript om declaraties naar boven te verplaatsen.


JavaScript-declaraties worden gehesen

In JavaScript kan een variabele worden gedeclareerd nadat deze is gebruikt.

Met andere woorden; een variabele kan worden gebruikt voordat deze is gedeclareerd.

Voorbeeld 1 geeft hetzelfde resultaat als 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 begrijpen, moet u de term "hijsen" begrijpen.

Hijsen is het standaardgedrag van JavaScript om alle declaraties naar de bovenkant van het huidige bereik te verplaatsen (naar de bovenkant van het huidige script of de huidige functie).


De let en const-sleutelwoorden

Variabelen gedefinieerd met leten constworden naar de bovenkant van het blok gehesen, maar niet geïnitialiseerd .

Betekenis: het codeblok is op de hoogte van de variabele, maar kan niet worden gebruikt totdat deze is gedeclareerd.

Het gebruik van een letvariabele voordat deze wordt gedeclareerd, resulteert in een ReferenceError.

De variabele bevindt zich in een "tijdelijke dode zone" vanaf het begin van het blok totdat deze wordt gedeclareerd:

Voorbeeld

Dit resulteert in een ReferenceError:
carName = "Volvo";
let carName;

Het gebruik van een constvariabele voordat deze wordt gedeclareerd, is een syntaxisfout, dus de code zal gewoon niet worden uitgevoerd.

Voorbeeld

Deze code wordt niet uitgevoerd.

carName = "Volvo";
const carName;

Lees meer over let en const in JS Let/Const .



JavaScript-initialisaties worden niet gehesen

JavaScript hijst alleen declaraties, geen initialisaties.

Voorbeeld 1 geeft niet hetzelfde resultaat als Voorbeeld 2 :

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

Is het logisch dat y in het laatste voorbeeld niet gedefinieerd is?

Dit komt doordat alleen de aangifte (var y), niet de initialisatie (=7) naar boven wordt gehesen.

Vanwege het hijsen is y gedeclareerd voordat het wordt gebruikt, maar omdat initialisaties niet worden gehesen, is de waarde van y niet gedefinieerd.

Voorbeeld 2 is hetzelfde als schrijven:

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

Declareer uw variabelen bovenaan!

Hijsen is (voor veel ontwikkelaars) een onbekend of over het hoofd gezien gedrag van JavaScript.

Als een ontwikkelaar het hijsen niet begrijpt, kunnen programma's bugs (fouten) bevatten.

Om fouten te voorkomen, declareert u altijd alle variabelen aan het begin van elk bereik.

Aangezien JavaScript de code op deze manier interpreteert, is het altijd een goede regel.

JavaScript in de strikte modus staat niet toe dat variabelen worden gebruikt als ze niet zijn gedeclareerd.
Bestudeer 'strikt gebruiken' in het volgende hoofdstuk.