![]() |
Объясните фишку: String || Boolean
Сделал в коде смешную опечатку - не там поставил скобочку.
В результате оператор || применился для стринга и булена. Решил посмотреть, а как на самом деле он будет работать для этих операндов и обнаружил какую-то странную логику... Для начала банальная проверка: Код:
if ("Hello") trace (true);Теперь мистика: Код:
trace ("Hello" || true)Код:
trace("Hello" || false)Как так? |
видимо false преобразовывается в строку с которой ''Hello" уже и сравнивается.
|
По идее должно писать "Hello". Очень странно. Сравните:
Код:
str = "Hello";Для цифр все правильно: Код:
trace( 0 || 777 ); // 777upd: Код:
trace( String("Hi") || "defaultValue" ); //HiКод:
trace( (str = "Hello") || "defaultValue" ); //Hello |
Код:
trace("Hello" || false) |
Цитата:
Код:
trace(Boolean("Hello")); // true |
Это компилятор чудит, в swf вообще не попадает строка с Hello. Так что перестаньте заниматься фигней :D
|
С такой, что действуют разные условия. Для сравнения приведу результаты для разных версий
Код:
/*Цитата:
Код:
s = "Hello"3. Здесь тоже самое, что в пункте 2, за исключением того, что флеш 8 с публикацией под 6-ку, на этот раз корректно проводит преобразование в false. Тут стоит заметить, что в отличии от if else который при сравнении с литералом в байт код записал только результат, конструкция ? : в байт код переводит весь ас-код. 4. Тоже самое, что и в пункте 1. 5. Самое хитрое :) Если заглянуть в хелп, то увидим Цитата:
|
Да, я смотрел руководство по 5-му пункту, злое наследие царского режима )).
С публикацией под 6-ку опыты тоже проделывал, только MX не ставил. Ладно, то что от него требуется этот оператор делает. Логическое OR отрабатывает, значение "по умолчанию" вместо undefined подставляет. Очень удобно в конструкции: Код:
my_xml.load( path_to_xml || "config.xml"); |
| Часовой пояс GMT +4, время: 13:32. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.