Š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ų:
- Visuotinė taikymo sritis
- 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į a
galima 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
if
pareiš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“ var
yra taikoma funkcijai ir taikoma let
blokams. Jei bandote naudoti var c = 'hello';
viduje if
ataskaitoje aukščiau programa, visos programos darbų, kaip c traktuojamas kaip vietinis kintamasis.
Norėdami sužinoti daugiau apie let
versus var
, apsilankykite „JavaScript let vs var“.