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

Оцените материал
(0 голосов)

Здравствуйте! Сегодня у нас речь пойдет о области видимости переменных (что такое переменная читайте здесь). Дело в том, что когда вы создаете переменную в функции и ее имя совпадает с имнем переменной вне функции, то вот тут могут быть различные интересные ситуации, связанные с глобальной и локальной областями видимости переменной.

Вот именно с этим мы с вами и будем разбираться в этом уроке.

Локальная и глобальная переменная

 

 

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

К глобальным относятся все переменные, которые вы создаете вне функции. И обязательно надо создавать переменную через ключевое слово var, если этого не сделать то переменная будет видна везде в программе и более того при включенном режиме strict mode это вызовет ошибку. Для тго чтобы включить режим strict mode достаточно в начале вашего сценария написать строку "use strict". Это будет указывать интерпретатору JavaScript, что надо строго соблюдать стандарт JavaScript. Вот пример с использованием глобальной переменной

 
var a =6; //глобальная переменная
 function double() {
  return alert(a*a); //использование глобальной переменной
}
double();

Просмотреть  пример

В примере объявлена глобальная переменная а, которой присвоено значение 6. В функции мы можем получить доступ к этой переменной и даже более того изменить ее значение и это значение у нее изменится везде.

Давайте рассмотрим пример, где значение глобальной переменной меняются в функции, а потом мы обращаемся к глобальной переменной вне функции и видим то значение, которое ей было установлено в самой функции.

 var a =6;
 function double() {
  a = 5; //меняем значение глобальной переменной в функции
  return alert(a*a);
}
double(a); //вызываем функцию
document.write(a); //значение глобальной переменной

Просмотреть  пример

Как можно видеть из примера если вы в функции меняете значение глобальной переменной оно уже у нее остается везде как в функции, так и вне ее.

Локальная переменая.

Когда вы объявляете переменную в функции, то она становится локальной и к ней можно получить доступ только из функции. Стоит заметить, что операторы if/else, for, while, do...while не влияют на область видимость переменных.

Итак получается, что в функции можно получить доступ к глобальной переменной, а глобально вне функции нельзя получить доступ к локальной переменной, созданной в теле функции. Рассмотрим пример.

 function double() {
  var a =6;
  return alert(a*a);
 }
 double();
 document.write(a); //пытаемся обратиться к локальной переменной

Просмотреть  пример

В примере глобально переменная не объявляется, а объявляется в функции, то есть локально. Затем вызываем функцию и пытаемся обратится к локальной переменной в результате ничего не получается, а в консоли видим ошибку, что переменная не определена.

Ошибка при обращении к локальной переменной

И последний вариант  это когда создается и глобальная переменная и локальная с одинаковым именем, что будет тогда. Давайте смотреть пример.

 var a =7;
 function double() {
  var a =6;
  return alert(a*a);
}
document.write(a);

Просмотреть  пример

Как видите здесь в функции создается как бы другая переменная несмотря на то, что ее имя совпадает с глобальной и в функции будет доступна именно локальная переменная она не сможет перезаписать глобальную, что и показывает этот пример.

Какой можно сделать из всего этого вывод. Это что нало стараться использовать и в функции и вне функции переменные с разными именами. Но знать про локальную и глобальную области видимости надо.

Итоги.

Переменная созданная вне функции является глобальной. 

Из функции можно получить доступ к глобальной переменной и изменить ее значение.

Переменная объявленная в функции является локальной. Доступ к локальной переменной можно получить только в функции.

Если объявить и глобальную и локальную переменные с одинаковыи именем, то при этом локальная не будет перезаписывать глобальную.

Задания

Что будет в результате выполнения следующего кода.

 
  var a =9;
 function show() {
  a=7;
  a--;
 console.log(a*a);
}
console.log(a);

Что будет, когда отработает этот код.

  a=5;
 function show() {
  var a = 7;
  a++; 
 return console.log(a);
}
console.log(a);

В заключении как всегда видео по локальным и глобальным переменным в JavaScript.

Прочитано 217 раз Последнее изменение Воскресенье, 10 сентября 2017 14:14
Другие материалы в этой категории:
Понравилась запись? Подпишитесь на обновления по почте:

Нетология

TemplateMonster

Поиск по сайту

Связной трэвел

Google+