Два восклицательных знака
После статьи на хабре про суп, задался вопросом.
Что значит два восклицательных знака? Это только для приведения к логическому типу? if (false == !!event) event = window.event; |
Действительно интересный ход мыслей. Если у автора кода было желание использовать принудительное приведение типов (хотя, в таком случае, зачем ==, а не === ?), допустимо было бы использовать просто
if (!event) event = window.event;. Или чем плох вариант event = event || window.event;? Из стёба в комментах к статье: Цитата:
|
De-Luxis, ответ кроется в самом определении этого оператора
Цитата:
Ну а второе применение возвращает обратное true или false... |
GuardCat, например у нас в Cache true = 1, а false = 0... И бывает нужно использовать именно такие значения... Ну мало ли для чего...
Примеры: val="test" write ''val Выдаст 0 (т.е. false) val="125 test" write ''val Выдаст 1 (т.е. true) |
Может так понятнее будет:
var str = '0';
alert(typeof str);
alert(Boolean(str));
alert('0' === false);
alert(typeof !str);
alert(!str);
alert(typeof !!str);
alert(!!str);
|
| Часовой пояс GMT +3, время: 18:50. |