JavaScript променлив обхват (с примери)

В този урок ще научите за променливия обхват в JavaScript с помощта на примери.

Обхватът се отнася до наличието на променливи и функции в определени части на кода.

В JavaScript променливата има два вида обхват:

  1. Глобален обхват
  2. Местен обхват

Глобален обхват

Променлива, декларирана в горната част на програма или извън функция, се счита за глобална променлива на обхвата.

Да видим пример за глобална променлива на обхвата.

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

В горната програма променлива a е декларирана в горната част на програма и е глобална променлива. Това означава, че променливата aможе да се използва навсякъде в програмата.

Стойността на глобална променлива може да бъде променена във функция. Например,

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

В горната програма променливата a е глобална променлива. Стойността на a е здравей. След това променливата a е достъпна във функция и стойността се променя на 3.

Следователно стойността на промяната се променя след промяната й във функцията.

Забележка : Добра практика е да се избягва използването на глобални променливи, защото стойността на глобална променлива може да се променя в различни области на програмата. Той може да въведе неизвестни резултати в програмата.

В JavaScript променлива може да се използва и без да се декларира. Ако се използва променлива, без да се декларира, тя автоматично се превръща в глобална променлива.

Например,

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

В горната програма променливата a е глобална променлива.

Ако променливата е декларирана с използване let a = "hello", програмата ще изведе грешка.

Забележка : В JavaScript има "strict mode";променлива, която не може да се използва без да я декларира. За да научите повече за стриктно, посетете JavaScript Strict.

Местен обхват

Променливата може да има и локален обхват, т.е. тя може да бъде достъпна само в рамките на функция.

Пример 1: Променлива за локален обхват

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

Изход

 helloWorld Uncaught ReferenceError: b не е дефиниран

В горната програма променливата a е глобална променлива, а променливата b е локална променлива. Променливата b може да бъде достъпна само във функцията greet. Следователно, когато се опитваме да получим достъп до променлива b извън функцията, възниква грешка.

let е Block Scoped

В letключовата дума е блок обхват на ниво (променлива може да бъде достъпен само в непосредствена блок).

Пример 2: Променлива с обхват на блок

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

Изход

 Hello World Hello World hello Uncaught ReferenceError: x не е дефиниран

В горната програма променлива

  • a е глобална променлива. Той може да бъде достъпен навсякъде в програмата.
  • b е локална променлива. Той може да бъде достъпен само във функцията greet.
  • c е променлива с обхват на блок. Той може да бъде достъпен само вътре в ifблока с оператори.

Следователно в горната програма първите две console.log()работят без проблем.

Опитваме се обаче да получим достъп до променливата с обхват на блока c извън блока в третата console.log(). Това ще доведе до грешка.

Забележка : В JavaScript varфункцията е с обхват и letе с блоков обхват. Ако се опитате да използвате var c = 'hello';вътре ifизраза в горната програма, цялата програма работи, тъй като c се третира като локална променлива.

За да научите повече за letсрещу var, посетете JavaScript let vs var.

Интересни статии...