Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Зачем нужно жесткое равенство в АС3? === (http://www.flasher.ru/forum/showthread.php?t=155692)

goodguy 08.05.2011 13:34

Зачем нужно жесткое равенство в АС3? ===
 
Почитал вот эти доки http://livedocs.adobe.com/flash/9.0/...trict_equality

И пришел для себя к выводу, что этот оператор абсолютно бесполезен в АС3.
Тем не менее, много раз, даже на этом форуме, видел как некоторые используют его в своих кодах.
Зачем?

Есть ли вообще реальные случаи, когда это необходимо?

expl 08.05.2011 14:07

Не помню ни одного случая, когда он понадобился. Вроде как формально логика отличается от "==" и вроде как должен где-то пригодится при разборе динамических данных. Но ситуаций не возникало.

Говорят, работает быстрее - т.е. на сравнении ссылок можно юзать.
На сравнении динамических данных, вытянутых из amf от сервера - просто опасно - серверисты там в своем PHP могут запросто и строку вместо числа отдать.
На сравнении данных от flashVars или из XML - просто бессымысленно, надо к числу строки приводить перед сравнением, если передаются числовые данные.

goodguy 08.05.2011 14:11

Цитата:

Говорят, работает быстрее - т.е. на сравнении ссылок можно юзать.
Даже если это и так, то очень незначительно.

Как написано в оф доках:
Цитата:

The strict equality (===) operator differs from the equality (==) operator in only two ways:
The strict equality operator performs automatic data conversion only for the number types (Number, int, and uint), whereas the equality operator performs automatic data conversion for all primitive data types.
When comparing null and undefined, the strict equality operator returns false.
Т.е. едва ли в реальном коде это может пригодиться. Я даже не могу представить сутуацию, где это можно использовать по назначению

fish_r 08.05.2011 14:11

Работает быстрее - точно. Где то здесь есть тема с результатами тестов. Там видно и подмечено что операторы === и !== работают быстрее чем == и !=.
Когда позволяет ситуация ставлю === и !==.

i.o. 08.05.2011 14:12

Код:

null == undefined // true
null === undefined // false


honest_man 08.05.2011 14:20

Я так понимаю операторы ==/!= Преобразовывают сравниваемые объекты в один общий тип(если это возможно), а ===/!== не преобразовывают.

Играет роль тип данных?

expl 08.05.2011 14:23

да, правильно, это в хелпе написано, а мы тут думаем, какая ситуация должна возникнуть на практике, чтобы ее надо было делать с помощью ===/!==

goodguy 08.05.2011 14:23

Цитата:

Сообщение от i.o. (Сообщение 994812)
Код:

null == undefined // true
null === undefined // false


Это и так понятно. Только бесполезно.


Цитата:

Я так понимаю операторы ==/!= Преобразовывают сравниваемые объекты в один общий тип(если это возможно), а ===/!== не преобразовывают.

Играет роль тип данных?
Это происходит только с примитивными типами данных, Number, int, Boolean и т.п.

honest_man 08.05.2011 14:31

Цитата:

Сообщение от goodguy (Сообщение 994815)
Это происходит только с примитивными типами данных, Number, int, Boolean и т.п.

Ну да...
Код AS3:

//компилится только в стандартном режиме
trace(3 == "3"); //тру
trace(3 === "3"); //фолс

Так может оно точно так же каботает и с полноценными объектами? Проверяет тип данных?

Добавлено через 3 минуты
К примеру "==" возвращает true когда сравнивается и предок с предком и предок с потомком, а === возвращает тру только когда сравнивается предок с предком?(имеется в виду механизм наследование)

Или я не прав? Поправьте меня ведь я не тэстил ))

alatar 08.05.2011 14:39

Цитата:

К примеру "==" возвращает true когда сравнивается и предок с предком и предок с потомком, а === возвращает тру только когда сравнивается предок с предком?(имеется в виду механизм наследование)
В обоих случаях сравниваются ссылки на объекты. К механизму наследования это никакого отношения не имеет.


Часовой пояс GMT +4, время: 12:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.