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 -sluitings


JavaScript-veranderlikes kan aan die plaaslike of globale omvang behoort.

Globale veranderlikes kan plaaslik (privaat) gemaak word met sluitings .


Globale veranderlikes

A functionkan toegang verkry tot alle veranderlikes wat binne die funksie gedefinieer is, soos volg:

Voorbeeld

function myFunction() {
  let a = 4;
  return a * a;
}

Maar 'n functionkan ook toegang verkry tot veranderlikes wat buite die funksie gedefinieer is, soos volg:

Voorbeeld

let a = 4;
function myFunction() {
  return a * a;
}

In die laaste voorbeeld is a 'n globale veranderlike.

In 'n webblad behoort globale veranderlikes aan die vensterobjek.

Globale veranderlikes kan gebruik (en verander) word deur alle skrifte in die bladsy (en in die venster).

In die eerste voorbeeld is a 'n plaaslike veranderlike.

'n Plaaslike veranderlike kan slegs binne die funksie gebruik word waar dit gedefinieer is. Dit is weggesteek van ander funksies en ander skrifkode.

Globale en plaaslike veranderlikes met dieselfde naam is verskillende veranderlikes. Om die een te wysig, verander nie die ander nie.

Veranderlikes geskep sonder 'n verklaring sleutelwoord ( var, let, of const) is altyd globaal, selfs al is hulle geskep binne 'n funksie.

Voorbeeld

function myFunction() {
  a = 4;
}


Veranderlike leeftyd

Globale veranderlikes leef totdat die bladsy weggegooi word, soos wanneer jy na 'n ander bladsy navigeer of die venster toemaak.

Plaaslike veranderlikes het kort lewens. Hulle word geskep wanneer die funksie opgeroep word, en uitgevee wanneer die funksie voltooi is.


'n Teen-dilemma

Gestel jy wil 'n veranderlike gebruik om iets te tel, en jy wil hê dat hierdie teller vir alle funksies beskikbaar moet wees.

Jy kan 'n globale veranderlike gebruik, en 'n functionom die teller te verhoog:

Voorbeeld

// Initiate counter
let counter = 0;

// Function to increment counter
function add() {
  counter += 1;
}

// Call add() 3 times
add();
add();
add();

// The counter should now be 3

Daar is 'n probleem met die oplossing hierbo: Enige kode op die bladsy kan die teller verander, sonder om add() te roep.

Die teller moet plaaslik vir die add()funksie wees, om te verhoed dat ander kode dit verander:

Voorbeeld

// Initiate counter
let counter = 0;

// Function to increment counter
function add() {
  let counter = 0;
  counter += 1;
}

// Call add() 3 times
add();
add();
add();

//The counter should now be 3. But it is 0

Dit het nie gewerk nie, want ons vertoon die globale teller in plaas van die plaaslike teller.

Ons kan die globale teller verwyder en toegang tot die plaaslike teller kry deur die funksie dit te laat terugstuur:

Voorbeeld

// Function to increment counter
function add() {
  let counter = 0;
  counter += 1;
  return counter;
}

// Call add() 3 times
add();
add();
add();

//The counter should now be 3. But it is 1.

Dit het nie gewerk nie, want ons het die plaaslike teller teruggestel elke keer as ons die funksie oproep.

 'n JavaScript-innerlike funksie kan dit oplos.


JavaScript geneste funksies

Alle funksies het toegang tot die globale omvang.  

Trouens, in JavaScript het alle funksies toegang tot die omvang "bo" hulle.

JavaScript ondersteun geneste funksies. Geneste funksies het toegang tot die omvang "bo" hulle.

In hierdie voorbeeld het die innerlike funksie plus()toegang tot die counterveranderlike in die ouerfunksie:

Voorbeeld

function add() {
  let counter = 0;
  function plus() {counter += 1;}
  plus();   
  return counter;
}

Dit kon die teendilemma opgelos het as ons die plus() funksie van buite kon bereik.

Ons moet ook 'n manier vind om counter = 0net een keer uit te voer.

Ons het 'n sluiting nodig.


JavaScript-sluitings

Onthou jy selfoproepfunksies? Wat doen hierdie funksie?

Voorbeeld

const add = (function () {
  let counter = 0;
  return function () {counter += 1; return counter}
})();

add();
add();
add();

// the counter is now 3

Voorbeeld Verduidelik

Die veranderlike addword aan die terugkeerwaarde van 'n selfoproepende funksie toegeken.

Die selfoproepfunksie werk net een keer. Dit stel die teller op nul (0), en gee 'n funksie-uitdrukking terug.

Op hierdie manier word voeg 'n funksie. Die "wonderlike" deel is dat dit toegang tot die toonbank in die oueromvang kan kry.

Dit word 'n JavaScript -sluiting genoem. Dit maak dit moontlik vir 'n funksie om " private " veranderlikes te hê.

Die teller word deur die omvang van die anonieme funksie beskerm, en kan slegs verander word deur die byvoegfunksie te gebruik.

'n Sluiting is 'n funksie wat toegang het tot die oueromvang, selfs nadat die ouerfunksie gesluit het.