JavaScript Variable Scope (met voorbeelden)

In deze tutorial leert u aan de hand van voorbeelden over variabel bereik in JavaScript.

Scope verwijst naar de beschikbaarheid van variabelen en functies in bepaalde delen van de code.

In JavaScript heeft een variabele twee soorten bereik:

  1. Wereldwijde reikwijdte
  2. Lokaal bereik

Wereldwijde reikwijdte

Een variabele die boven aan een programma of buiten een functie wordt gedeclareerd, wordt beschouwd als een globale bereikvariabele.

Laten we eens kijken naar een voorbeeld van een globale bereikvariabele.

 // program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello

In het bovenstaande programma wordt variabele a bovenaan een programma gedeclareerd en is het een globale variabele. Dit betekent dat de variabele aoveral in het programma kan worden gebruikt.

De waarde van een globale variabele kan binnen een functie worden gewijzigd. Bijvoorbeeld,

 // program to show the change in global variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3

In het bovenstaande programma is variabele a een globale variabele. De waarde van a is hallo. Vervolgens wordt de variabele a binnen een functie benaderd en verandert de waarde in 3.

Daarom verandert de waarde van a nadat deze binnen de functie is gewijzigd.

Opmerking : het is een goede gewoonte om het gebruik van globale variabelen te vermijden, omdat de waarde van een globale variabele op verschillende gebieden in het programma kan veranderen. Het kan onbekende resultaten in het programma introduceren.

In JavaScript kan een variabele ook worden gebruikt zonder deze te declareren. Als een variabele wordt gebruikt zonder deze te declareren, wordt die variabele automatisch een globale variabele.

Bijvoorbeeld,

 function greet() ( a = "hello" ) greet(); console.log(a); // hello

In het bovenstaande programma is variabele a een globale variabele.

Als de variabele werd gedeclareerd met let a = "hello", zou het programma een fout genereren.

Opmerking : in JavaScript kan "strict mode";een variabele niet worden gebruikt zonder deze te declareren. Ga naar JavaScript Strict voor meer informatie over strict.

Lokaal bereik

Een variabele kan ook een lokaal bereik hebben, dat wil zeggen dat hij alleen toegankelijk is binnen een functie.

Voorbeeld 1: Variabele lokaal bereik

 // program showing local scope of a variable let a = "hello"; function greet() ( let b = "World" console.log(a + b); ) greet(); console.log(a + b); // error

Uitvoer

 helloWorld Uncaught ReferenceError: b is niet gedefinieerd

In het bovenstaande programma is variabele a een globale variabele en is variabele b een lokale variabele. De variabele b is alleen toegankelijk binnen de functie begroet. Daarom treedt er een fout op wanneer we proberen toegang te krijgen tot variabele b buiten de functie.

let is Block Scoped

Het letsleutelwoord is blokbereik (variabele is alleen toegankelijk in het directe blok).

Voorbeeld 2: variabele met een blokbereik

 // program showing block-scoped concept // global variable let a = 'Hello'; function greet() ( // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') ( // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); ) // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c); ) greet();

Uitvoer

 Hallo wereld Hallo wereld hallo Uncaught ReferenceError: x is niet gedefinieerd

In het bovenstaande programma, variabele

  • a is een globale variabele. Het is overal in het programma toegankelijk.
  • b is een lokale variabele. Het is alleen toegankelijk binnen de functie greet.
  • c is een variabele met een blokbereik. Het is alleen toegankelijk binnen het ifinstructieblok.

Daarom werken in het bovenstaande programma de eerste twee console.log()probleemloos.

We proberen echter toegang te krijgen tot de blokbereikvariabele c buiten het blok in het derde console.log(). Dit zal een fout veroorzaken.

Opmerking : in JavaScript varis het functiebereik en het letblokbereik. Als je var c = 'hello';binnen de ifinstructie in het bovenstaande programma probeert te gebruiken , werkt het hele programma, aangezien c wordt behandeld als een lokale variabele.

Ga naar JavaScript let vs var voor meer informatie over letversus var.

Interessante artikelen...