JSCRIPT MANUAL

Microsoft® JScript™
Область видимости переменных
 Описание JScript
Пред.
След.


В Microsoft JScript область видимости переменных может быть представлена в двух контекстах: глобальном (global) и локальном (local). Если объявление переменной (variable) находится вне определения функции, это - глобальная переменная, значение которой доступно и изменяемо в любом месте программы. Если переменная объявляется в определении функции, то она является локальной. Такая переменная создается и уничтожается каждый раз при вызове функции; она не доступна вне функции.

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

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

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

// JScript код опущен для краткости.
var aCentaur = "A centaur is probably a mounted Scythian warrior";

// JScript код опущен для краткости.
  aCentaur += ", misreported; that is, ";  // Конкатенация локальной переменной.

// JScript код опущен для краткости.
}  // Конец функции.

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 не имеет определенного значения в момент, когда вызвана инструкция, поэтому ее значение равно undefined.


Перевод © 2000-2013 pauk R-T-F-M.info. Все права защищены.