Scope verwijst naar de beschikbaarheid van variabelen en functies in bepaalde delen van de code.
In JavaScript heeft een variabele twee soorten scope:
- globale Scope
- lokale Scope
globale Scope
een variabele die boven aan een programma of buiten een functie wordt gedeclareerd, wordt beschouwd als een globale scope variabele.
laten we een voorbeeld van een globale scope variabele bekijken.
// 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. Het betekent dat de variabele a
overal 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 variablelet a = "hello";function greet() { a = 3;}// before the function callconsole.log(a);//after the function callgreet();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 benaderd binnen een functie en verandert de waarde in 3.
vandaar, de waarde van een verandert na het veranderen van het binnen de functie.
opmerking: Het is een goede praktijk om 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 te 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 geven.
opmerking: In JavaScript is er "strict mode";
waarin een variabele niet kan worden gebruikt zonder deze te declareren. Ga voor meer informatie over strict naar JavaScript Strict.
lokale Scope
een variabele kan ook een lokale scope hebben, dat wil zeggen dat deze alleen toegankelijk is binnen een functie.
Voorbeeld 1: lokale Scope variabele
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
Output
helloWorldUncaught ReferenceError: b is not defined
in het bovenstaande programma is variabele A een globale variabele en variabele b een lokale variabele. De variabele b is alleen toegankelijk binnen de functie greet. Vandaar, wanneer we proberen om toegang te krijgen tot variabele b buiten de functie, treedt er een fout op.
let is Block Scoped
het let
sleutelwoord is block-scoped (variabele kan alleen worden benaderd in het directe blok).
Voorbeeld 2: variabele
// program showing block-scoped concept// global variablelet 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
Hello WorldHello World helloUncaught ReferenceError: x is not defined
in het bovenstaande programma is variabele
- A een globale variabele. Het kan overal in het programma worden geopend.
- b is een lokale variabele. Het is alleen toegankelijk binnen de functie
greet
. - c is een variabele met block-scope. Het is alleen toegankelijk in het statementblok
if
.
in het bovenstaande programma werken de eerste twee console.log()
zonder problemen.
echter, we proberen toegang te krijgen tot de blok-scope variabele c buiten het blok in de derde console.log()
. Dit zal een fout veroorzaken.
opmerking: in JavaScript, var
is functie-scoped en let
is block-scoped. Als u var c = 'hello';
probeert te gebruiken binnen het if
statement in het bovenstaande programma, werkt het hele programma, aangezien c wordt behandeld als een lokale variabele.
voor meer informatie over let
versus var
, bezoek JavaScript let vs var.