Меню
Спросить
JS

Область видимости в JavaScript

19 октября 2017
Область видимости в JavaScript

Всем привет. Сегодня будет небольшая тема - область видимости в JavaScript. Как вы понимаете данный термин - "Область видимости"? Какая-то Владимирская область у которой есть возможность видеть? Какая-то область науки, благодаря которой мы видим? Какая-то видимость, благодаря которой область? Черт все не то! Какие же вы глупые, хорошо, что есть я, я с вами ребята!
Область видимости - это та часть кода или программы, в которой кто-то или что-то может видеть, а может и не видеть ту или иную переменную.
Рассмотрим пример.

  1. alert('bla Bla bla');
  2. console.log(2+2);
  3. THIS IS PODRUGA;
  4. // какой-то код
  5. function COMNATA() {
  6.     var
  7.     ТЫ;
  8. }

Представь, что функция, это какая-то комната, например твоя спальня. Так же есть две переменные, ты и твоя подруга. Ты в комнате. Твоя подруга находится вне этой комнаты. И у каждого из вас есть своя область видимости, ты можешь видеть все что в твоей комнате, но не видишь ни подругу ни всего остального. Аналогично с подругой, она видит то место где она, но не видит ни тебя ни твою комнату.
Это и есть область видимости, давайте теперь рассмотрим конкретно область видимости в JavaScript.
Напишем не большой код.

  1. var
  2. a = 5;
  3. alert(a); // 5
  4. function hehe() {
  5.     var
  6.     b = 25;
  7.     alert(a+'___'+b); // 5___25
  8. }
  9. hehe();
  10. alert(b); // Ошибка, неизвестная переменная 'b'

Здесь мы ярко можем увидеть, что это такое область видимости в JavaScript.

Глобальные переменные

Обратите внимание, алерт может переменную "a" вывести в трех местах:
- перед функцией
- в функции
- после функции
то есть, переменная "а" есть во всем коде, а точнее она видима всем в коде, а точнее она глобальная переменная. Почему так? Взгляните, в каком месте мы ее объявили? В самом начале кода или за пределами функции, поэтому она глобальна.

Локальные переменные

А теперь посмотрим на переменную "b", как вы уже догадались - это локальная переменная. Она объявлена внутри функции и доступна только там, в этой функции, а за пределами функции она никому не известна и не доступна.
НО
Есть одно но, если мы уберем команду var перед "b", то переменная "b" станет глобальной.

  1. var
  2. a = 5;
  3. alert(a); // 5
  4. function hehe() {
  5.     b = 25;
  6.     alert(a+'___'+b); // 5___25
  7. }
  8. hehe();
  9. alert(b); // 25
Глобальные и локальные переменные

Одинаковое название переменных

А что если, название глобальной и локальной переменных совпадает?

  1. var
  2. a = 5;
  3. alert(a);
  4. function hehe() {
  5.     var
  6.     a = 25;
  7.     alert(a+'___'+a);
  8. }
  9. hehe();
  10. alert(a);

Что тогда выдаст алерт? Он сработает должным образом: за пределами функции глобальная переменная "а" будет равна 5, а внутри локальная переменная "а" будет равна 25.

Заключение

На сегодня все, если что не понятно или забыл - пишите. Всем спасибо за урок, пока =)

Следующая статьяПредыдущая статья