Тип undefined

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

var new_var;trace(new_var); // Выводит: undefined

Так как в ActionScript переменные создаются автоматически при появлении в коде неизвестного идентификатора, то величина undefined возвращается при попытке обращения к несуществующим переменным, функциям, свойствам или методам (или при ошибке в адресации):

trace(sin(0)); // Выводит: undefined (синус доступен как
// метод объекта Math: Math.sin(0))

Возвращена undefined может быть и в том случае, если вы неверно задали параметры функции или метода.

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

function sealer(clip_name, proc) { // clip name - строка с именем клипа,
// proc - процент увеличения
// Переводим строку имени в идентификатор.
// Если ему соответствует клип - продолжаем выполнение кода
if (eval(clip_name)!= undefined) {
// Бели процент увеличения не задан, то, по умолчанию, изменяем размер клипа // на
100 %.
if (proc = undefined) {
var proc = 100;
}
// Изменяем размер клипа до нужной величины
eval(clip_name)._width+=eval(clip_name)._width"proc/100;
eval(clip_name)._height+=eval(clip_name)._height*proc/100;
} else { // Если клип с именем clip_name не был найден, выводим
// об этом сообщение
trace ("Клипа с именем "+clip_name+" не существует");
}
}
// Создаем небольшой кружок и, переведя его в клип, называем ball
sealer("ball",100); // Кружок увеличивается в два раза
sealer("balll",100); // Выводит: Клипа с именем balll не существует

Отклонением ActionScript от ЕСМА-262 во Flash 5 и Flash MX являлось то, что при преобразовании undefined в строку возвращалось не «undefined», а пустая строка (что было связано с необходимостью обеспечения обратной совместимости с Flash 4).


Во Flash MX 2004 undefined преобразуется в строку «undefined». Описанную особенность нужно учитывать, если в создаваемом коде проводится операция приведения параметров к строковому типу.

Еще одно отличие ActionScript от ЕСМА-262 заключалось в том, что при преобразовании undefined в число возвращался 0. Начиная с Flash MX 2004, этого недостатка больше не существует.

Теперь undefined преобразуется в NaN.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Клипы (тип movieclip)
Кодировка символов. Уникод во Flash
Основные понятия
Синтаксис ActionScript
Числа (тип number)