![]() |
||
|
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 не имеет присвоенного значения в точке, где это выражение осуществляется в программе, и поэтому – не определена. |