Scope avser tillgängligheten av variabler och funktioner i vissa delar av koden.
i JavaScript har en variabel två typer av omfattning:
- Global Scope
- lokalt Scope
Global Scope
en variabel som deklareras högst upp i ett program eller utanför en funktion anses vara en global scope variabel.
Låt oss se ett exempel på en global scope variabel.
// program to print a text let a = "hello";function greet () { console.log(a);}greet(); // hello
i ovanstående program deklareras variabel a högst upp i ett program och är en global variabel. Det betyder att variabeln a
kan användas var som helst i programmet.
värdet på en global variabel kan ändras i en funktion. Till exempel
// 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
i ovanstående program är variabel a en global variabel. Värdet av A är Hej. Då nås variabeln a inuti en funktion och värdet ändras till 3.
därför ändras värdet på a efter att ha ändrat det i funktionen.
Obs: Det är en bra praxis att undvika att använda globala variabler eftersom värdet på en global variabel kan förändras inom olika områden i programmet. Det kan introducera okända resultat i programmet.
i JavaScript kan en variabel också användas utan att deklarera den. Om en variabel används utan att deklarera den blir den variabeln automatiskt en global variabel.
till exempel
function greet() { a = "hello"}greet();console.log(a); // hello
i ovanstående program är variabel a en global variabel.
om variabeln deklarerades med let a = "hello"
, skulle programmet kasta ett fel.
Obs: I JavaScript finns "strict mode";
där en variabel inte kan användas utan att deklarera den. För att lära dig mer om strict, besök JavaScript Strict.
lokalt omfång
en variabel kan också ha ett lokalt omfång, dvs. den kan endast nås inom en funktion.
exempel 1: Local Scope variabel
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
utgång
helloWorldUncaught ReferenceError: b is not defined
i ovanstående program är variabel a en global variabel och variabel b är en lokal variabel. Variabeln b kan endast nås inuti funktionen hälsa. Därför, när vi försöker komma åt variabel b utanför funktionen, uppstår ett fel.
låt är Block Scoped
let
nyckelordet är block scoped (variabel kan endast nås i det omedelbara blocket).
exempel 2: block-scoped variabel
// 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();
utgång
Hello WorldHello World helloUncaught ReferenceError: x is not defined
i ovanstående program är variabel
- a en global variabel. Den kan nås var som helst i programmet.
- b är en lokal variabel. Den kan endast nås inom funktionen
greet
. - c är en block-scoped variabel. Den kan endast nås inuti
if
uttalande block.
i ovanstående program fungerar de två förstaconsole.log()
utan problem.
vi försöker dock komma åt block-scoped variabeln c utanför blocket i det tredje console.log()
. Detta kommer att kasta ett fel.
Obs: i JavaScript,var
är funktion scoped ochlet
är block-scoped. Om du försöker användavar c = 'hello';
inutiif
– uttalandet i ovanstående program fungerar hela programmet, eftersom c behandlas som en lokal variabel.
Om du vill veta mer om let
versus var
, besök JavaScript låt vs var.