„JavaScript“ kintamasis taikymo sritis (su pavyzdžiais)

Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ kintamą sritį.

Taikymo sritis reiškia kintamųjų ir funkcijų prieinamumą tam tikrose kodo dalyse.

„JavaScript“ kintamasis yra dviejų tipų:

  1. Visuotinė taikymo sritis
  2. Vietinė sritis

Visuotinė taikymo sritis

Kintamasis, deklaruojamas programos viršuje arba už funkcijos ribų, laikomas visuotinės apimties kintamuoju.

Pažiūrėkime pasaulinės apimties kintamojo pavyzdį.

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

Ankstesnėje programoje kintamasis a yra deklaruojamas programos viršuje ir yra visuotinis kintamasis. Tai reiškia, kad kintamąjį agalima naudoti bet kurioje programos vietoje.

Funkcijos viduje galima pakeisti visuotinio kintamojo vertę. Pavyzdžiui,

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

Pirmiau pateiktoje programoje kintamasis yra pasaulinis kintamasis. A vertė yra labas. Tada kintamasis a pasiekiamas funkcijos viduje ir vertė pasikeičia į 3.

Vadinasi, pakeitimo vertė pasikeičia ją pakeitus funkcijos viduje.

Pastaba : gera praktika vengti naudoti visuotinius kintamuosius, nes visuotinio kintamojo vertė gali skirtis skirtingose ​​programos srityse. Tai gali pristatyti nežinomus programos rezultatus.

„JavaScript“ kintamąjį galima naudoti ir jo nedeklaravus. Jei kintamasis naudojamas nedeklaruojant, tas kintamasis automatiškai tampa visuotiniu kintamuoju.

Pavyzdžiui,

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

Pirmiau pateiktoje programoje kintamasis yra pasaulinis kintamasis.

Jei kintamasis būtų deklaruojamas naudojant let a = "hello", programa sukeltų klaidą.

Pastaba : „JavaScript“ yra tas "strict mode";, kuriame kintamojo negalima naudoti jo nedeklaravus. Norėdami sužinoti daugiau apie griežtą, apsilankykite „JavaScript Strict“.

Vietinė sritis

Kintamasis taip pat gali turėti vietinę taikymo sritį, ty prie jo galima prisijungti tik naudojant funkciją.

1 pavyzdys: vietinio taikymo srities kintamasis

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

Rezultatas

 helloWorld Uncaught ReferenceError: b nėra apibrėžtas

Ankstesnėje programoje kintamasis a yra visuotinis, o kintamasis b - vietinis kintamasis. Kintamąjį b galima pasiekti tik sveikinimo funkcijos viduje. Taigi, kai bandome pasiekti kintamąjį b už funkcijos ribų, įvyksta klaida.

tegul yra „Block Scoped“

letŽodis yra blokas scoped (kintamasis gali būti prieinami tik artimiausioje bloko).

2 pavyzdys: kintamasis su blokais

 // 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();

Rezultatas

 Sveiki, sveiki, sveiki, sveiki, nepagauta nuoroda Klaida: x nėra apibrėžtas

Pirmiau pateiktoje programoje kintamasis

  • a yra visuotinis kintamasis. Jį galima pasiekti bet kurioje programos vietoje.
  • b yra vietinis kintamasis. Jį galima pasiekti tik funkcijos viduje greet.
  • c yra bloko apimties kintamasis. Su juo galima susipažinti tik ifpareiškimų bloke.

Taigi pirmiau minėtoje programoje pirmieji du console.log()veikia be jokių problemų.

Tačiau mes bandome pasiekti bloko apimties kintamąjį c už trečiojo bloko ribų console.log(). Tai sukels klaidą.

Pastaba : „JavaScript“ varyra taikoma funkcijai ir taikoma letblokams. Jei bandote naudoti var c = 'hello';viduje ifataskaitoje aukščiau programa, visos programos darbų, kaip c traktuojamas kaip vietinis kintamasis.

Norėdami sužinoti daugiau apie letversus var, apsilankykite „JavaScript let vs var“.

Įdomios straipsniai...