ЈаваСцрипт променљиви опсег (са примерима)

У овом упутству ћете научити о променљивом опсегу у ЈаваСцрипт-у уз помоћ примера.

Опсег се односи на доступност променљивих и функција у одређеним деловима кода.

У ЈаваСцрипт-у променљива има две врсте опсега:

  1. Глобал Сцопе
  2. Локални опсег

Глобал Сцопе

Променљива декларисана на врху програма или изван функције сматра се променљивом глобалног опсега.

Погледајмо пример променљиве глобалног опсега.

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

У горњем програму променљива а је декларисана на врху програма и представља глобалну променљиву. То значи да се променљива 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

У горњем програму променљива а је глобална променљива. Вредност а је здраво. Тада се променљивој а приступа унутар функције и вредност се мења на 3.

Дакле, вредност промене се мења након промене унутар функције.

Напомена : Добра је пракса избегавати употребу глобалних променљивих, јер се вредност глобалне променљиве може променити у различитим областима програма. Може да уведе непознате резултате у програм.

У ЈаваСцрипт-у се променљива такође може користити без декларисања. Ако се променљива користи без декларисања, та променљива аутоматски постаје глобална променљива.

На пример,

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

У горњем програму променљива а је глобална променљива.

Ако је променљива декларисана коришћењем let a = "hello", програм ће избацити грешку.

Напомена : У ЈаваСцрипт- "strict mode";у постоји променљива која се не може користити без декларисања. Да бисте сазнали више о стриктном, посетите ЈаваСцрипт Стрицт.

Локални опсег

Варијабла такође може имати локални опсег, односно може јој се приступити само у оквиру функције.

Пример 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

Оутпут

 хеллоВорлд Унцаугхт РеференцеЕррор: б није дефинисан

У горњем програму, променљива а је глобална променљива, а променљива б је локална променљива. Променљивој б може се приступити само унутар функције греет. Дакле, када покушавамо да приступимо променљивој б изван функције, долази до грешке.

нека је Блоцк Сцопед

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

Оутпут

 Хелло Ворлд Хелло Ворлд хелло Унцаугхт РеференцеЕррор: к није дефинисан

У горњем програму променљива

  • а је глобална променљива. Може му се приступити било где у програму.
  • б је локална променљива. Може му се приступити само унутар функције greet.
  • ц је променљива опсега блока. Може му се приступити само унутар ifблока извода.

Дакле, у горњем програму, прва два console.log()раде без икаквих проблема.

Међутим, у трећем покушавамо да приступимо блок-опсегу променљиве ц изван блока console.log(). Ово ће довести до грешке.

Напомена : У ЈаваСцрипт-у varје опсег функције и опсег letблока. Ако покушате да користите var c = 'hello';унутрашњост ifизраза у горенаведеном програму, цео програм ради, пошто се ц третира као локална променљива.

Да бисте сазнали више о letверсус var, посетите ЈаваСцрипт лет вс вар.

Занимљиви Чланци...