Macromedia Flash Professional 8. Графика и анимация
Шрифт:
Оператор typeof принимает в качестве операнда переменную или выражение и возвращает строку, описывающую тип данных операнда. Все значения, которые он может вернуть, перечислены в табл. 19.8.
Оператор typeof может использоваться, например, так:
status = typeof (somevar);
Здесь мы присваиваем результат выполнения оператора typeof
И напоследок рассмотрим еще два важных вопроса: совместимость типов данных и преобразование одного типа к другому.
Что получится, если сложить два числовых значения? Правильно — еще одно числовое значение. А если сложить число и строку? Трудно сказать. Тут Flash сталкивается с проблемой несовместимости типов данных и пытается сделать эти типы совместимыми, преобразуя один из них к другому. Сначала он пытается преобразовать строку в число и, если это удается, выполняет сложение. В случае неудачи число будет преобразовано в строку, и две полученные строки будут объединены. Например, в результате выполнения операторов
var а, b, с, d, е, f;
а = 11;
b = "12";
с = а + b;
d = "Flash";
е = 8;
f = d + е;
значение переменной b при сложении с переменной а будет преобразовано в числовой тип; таким образом, переменная с будет содержать значение 23. Но так как значение переменной d не может быть преобразовано в число, значение е будет преобразовано в строку, и результат — значение f — станет равным "FlashS".
Логические величины преобразуются либо в числовые, либо в строковые, в зависимости от конкретного случая. Значение true будет преобразовано в число 1 или строку "1", а значение false — в 0 или "0".
Видно, что Flash изо всех сил пытается правильно выполнить даже некорректно написанные выражения. Иногда это получается, но чаще все работает не так, как планировалось, и, в конце концов, выполнение сценария прерывается в связи с обнаружением ошибки совсем в другом его месте, на абсолютно верном операторе. Поэтому лучше всего не допускать подобных казусов, оперировать только переменными совместимых типов и самим выполнять нужные преобразования типов.
Для преобразования типов данных используется следующий синтаксис:
<Переменная нужного типа> = <Ключевое слово, соответствующее этому типу>
(<Преобразуемое значение>);
Ключевые слова, соответствующие тому или иному типу данных, приведены в табл. 19.8. Да, именно эти слова возвращает оператор typeof в качестве результата. Единственное — их нужно указывать с большой буквы.
Например, для того чтобы преобразовать строку в число, нужно написать такое выражение:
n = Number("2004");
Если
Последний вопрос, который мы здесь рассмотрим, — это приоритет операторов. Как мы помним, приоритет влияет на порядок, в котором выполняются операторы в выражении.
Пусть имеется следующее выражение:
а = b + с — 10;
В этом случае сначала к значению переменной b будет прибавлено значение с, а потом из суммы будет вычтено 10. Операторы этого выражения имеют одинаковый приоритет и поэтому выполняются строго слева направо.
Теперь рассмотрим такое выражение:
а = b + с * 10;
А в этом случае сначала будет выполнено умножение значения с на 10, а уже потом к полученному произведению будет прибавлено значение b. Оператор умножения имеет больший приоритет, чем оператор сложения, поэтому порядок "строго слева направо" будет нарушен.
Самый низкий приоритет имеет оператор присваивания =. Вот почему сначала вычисляется само выражение, а потом его результат присваивается переменной.
В общем, основной принцип выполнения всех операторов таков: сначала выполняются операторы с более высоким приоритетом, а уже потом — операторы с более низким. Операторы с одинаковым приоритетом выполняются в порядке их следования (слева направо).
В табл. 19.9 перечислены все изученные нами операторы в порядке убывания их приоритетов. Полную таблицу приоритетов можно найти в интерактивной справке Flash.
Запомните эту таблицу. Неправильный порядок выполнения операторов может стать причиной трудновыявляемых ошибок, при которых внешне абсолютно правильное выражение дает неверный результат.
Но что делать, если нам нужно нарушить обычный порядок выполнения операторов? Воспользуемся скобками. При такой записи заключенные в скобки операторы выполняются первыми.
а = (b + с) * 10;
В этом случае сначала будет выполнено сложение значений переменных b и с, а потом получившаяся сумма будет умножена на 10.
Операторы, заключенные в скобки, также подчиняются приоритету. Поэтому часто используются многократно вложенные скобки:
а = ((b + с) * 10 — d) /2 + 9;
Здесь операторы будут выполнены в такой последовательности:
1. Сложение b и с.
2. Умножение полученной суммы на 10.
3. Вычитание d из произведения.
4. Деление разности на 2.
5. Прибавление 9 к частному.
Если удалить скобки:
a=b+c*10-d/ 2 + 9;
то порядок выполнения операторов будет таким:
1. Умножение с и 10.