zakres zmiennych JavaScript

zakres odnosi się do dostępności zmiennych i funkcji w niektórych częściach kodu.

w JavaScript zmienna ma dwa typy zakresu:

  1. Globalny zakres
  2. lokalny zakres

Globalny zakres

zmienna zadeklarowana na górze programu lub poza funkcją jest uważana za globalną zmienną zakresu.

zobaczmy przykład globalnej zmiennej zakresu.

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

w powyższym programie zmienna a jest zadeklarowana na górze programu i jest zmienną globalną. Oznacza to, że zmienna a może być użyta w dowolnym miejscu programu.

wartość zmiennej globalnej może być zmieniana wewnątrz funkcji. Na przykład

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

w powyższym programie zmienna a jest zmienną globalną. Wartość a to hello. Następnie zmienna a jest dostępna wewnątrz funkcji, a wartość zmienia się na 3.

stąd wartość a zmienia się po zmianie jej wewnątrz funkcji.

Uwaga: Dobrą praktyką jest unikanie używania zmiennych globalnych, ponieważ wartość zmiennej globalnej może się zmieniać w różnych obszarach programu. Może wprowadzić nieznane wyniki w programie.

w JavaScript zmienna może być również używana bez deklarowania jej. Jeśli zmienna jest używana bez deklarowania jej, zmienna ta automatycznie staje się zmienną globalną.

na przykład

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

w powyższym programie zmienna a jest zmienną globalną.

jeśli zmienna została zadeklarowana za pomocąlet a = "hello", program wyrzuciłby błąd.

Uwaga: W języku JavaScript istnieje "strict mode";, w którym nie można użyć zmiennej bez jej zadeklarowania. Aby dowiedzieć się więcej o strict, odwiedź JavaScript Strict.

zakres lokalny

zmienna może również mieć zasięg lokalny, tzn. może być dostępna tylko w ramach funkcji.

przykład 1: zmienna zakresu lokalnego

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

Wyjście

helloWorldUncaught ReferenceError: b is not defined

w powyższym programie zmienna a jest zmienną globalną, a zmienna b jest zmienną lokalną. Do zmiennej b można uzyskać dostęp tylko wewnątrz funkcji greet. Dlatego, gdy próbujemy uzyskać dostęp do zmiennej B poza funkcją, pojawia się błąd.

let to block Scoped

let słowo kluczowe jest block-scoped (zmienna może być dostępna tylko w bezpośrednim bloku).

przykład 2: zmienna o zasięgu blokowym

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

Wyjście

Hello WorldHello World helloUncaught ReferenceError: x is not defined

w powyższym programie zmienna

  • a jest zmienną globalną. Można go uzyskać w dowolnym miejscu w programie.
  • b jest zmienną lokalną. Dostęp do niej jest możliwy tylko wewnątrz funkcji greet.
  • C jest zmienną o zasięgu bloku. Dostęp do niego można uzyskać tylko wewnątrz bloku instrukcji if.

stąd w powyższym programie dwa pierwszeconsole.log() działają bez żadnych problemów.

jednak staramy się uzyskać dostęp do zmiennej c o zasięgu bloku poza blokiem w trzecim console.log(). Spowoduje to błąd.

Uwaga: w JavaScript,var jest scoped funkcji ilet jest scoped bloku. Jeśli spróbujesz użyćvar c = 'hello'; wewnątrz instrukcjiif w powyższym programie, cały program działa, ponieważ c jest traktowane jako zmienna lokalna.

aby dowiedzieć się więcej o letversus var, odwiedź Stronę JavaScript let vs var.

Related Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *