ИНФОРМАЦИЯ,    ДИЗАЙН,    ПЕРЕВОДЫ,    РЕКЛАМА   .   .   .
w a p - с а й т
Информационный портал
Сегодня:  
admin@aranea.ru
+79068922256

  aranea.ru || JavaScript - Введение | Области действия переменных

Области действия переменных

JavaScript имеет две области: глобальную и локальную. Если вы объявляете переменную вне любого определения функции, она является глобальной, и ее значение доступно и модифицируется во всей вашей программе. Если вы декларируете переменную внутри определения функции, то эта переменная – локальная. Она создается и разрушается каждый раз, когда выполняется функция; к ней нельзя получить доступ из любого места вне этой функции.

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

var aCentaur = "a horse with rider,";  
// Глобальное определение aCentaur.

// Программа JavaScript, опускается для краткости.
function antiquities()  
// Локальная переменная aCentaur объявляется в этой функции.
{

// Программа JavaScript, опускается для краткости.
var aCentaur = "A centaur is probably a mounted Scythian warrior";

// Программа JavaScript, опускается для краткости.
  aCentaur += ", misreported; that is, ";  
// Прибавление к локальной переменной.

// Программа JavaScript, опускается для краткости.
}  // Конец функции.

var nothinginparticular = antiquities();
aCentaur += " as seen from a distance by a naive innocent.";

/*
Внутри функции переменная содержит: "A centaur is probably a 
mounted Scythian warrior, misreported; that is, "; вне функции 
переменная содержит остаток предложения:
"a horse with rider, as seen from a distance by a naive 
innocent."
*/  

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

var aNumber = 100;
var withAdditive = 0;

withAdditive += aNumber;  // withAdditive - теперь 100.
tweak();
withAdditive += aNumber;  // withAdditive - теперь 200.

function tweak()  {
var newThing = 0;  // Явное объявление переменной newThing.
// Следующее выражение, если не комментировалось бы, то генерировало бы ошибку.
// newThing = aNumber;
// Следующее выражение присваивает значение 42 локальной aNumber, объявляя ее неявно.
aNumber = 42;
if (false)  {
    var aNumber;  // Это выражение никогда не выполнится.
    aNumber = "Hello!";  // Это выражение никогда не выполнится.
    }  // Конец условий.
}  // Конец определения функции.

Выражение, которое комментируют в вышеуказанном коде, пытается присвоить значение локальной переменной aNumber для локальной переменной newThing. Это не работает, не смотря на тот факт, что локальная переменная aNumber определена где-то в функции, и поэтому существует на ее протяжении. Переменная aNumber не имеет присвоенного значения в точке, где это выражение осуществляется в программе, и поэтому – не определена.

← Назад | Вперед →
Copyright © 2006 -  aranea.ru