3.3. Локальные переменные функций

3.3. Локальные переменные функций

Функции представляют собой участки инкапсулированного кода, содержание которого недоступно для внешних объектов. Вы не можете получить прямой доступ к одному из внутренних элементов функции, используя, например, оператор точка. Чем-то функции напоминают ящик из тонированного стекла: из них «видно» все, а в них — ничего. Эта особенность является причиной того, что вы можете использовать в функциях переменные двух типов.

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

per = this; // При вызове будет создана переменная per с таким же // расположением, как и func()

trace(per); // Выводит: undefined (код в теле функции будет выполнен // только при ее вызове) func ();

trace(per); // Выводит: _level0 (func() расположена на основной временной // диаграмме)

Зачастую в функциях приходится создавать новые, не находящие отображения в основном коде, переменные. Если при этом использовать ключевое слово var, то объявленная переменная будет обладать локальной видимостью в рамках кода этой функции. Иными словами, она будет существовать только во время активации функции, и ее наличие никак не повлияет на кодовое окружение функции:

var per:Number =0; // При вызове будет создана локальная переменная // объекта активации функции

trace(per); // Выводит: undefined (переменная не была сохранена на основной // временной диаграмме)

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

var per:Number = 0; function func():Void

📎📎📎📎📎📎📎📎📎📎