Два восклицательных знака
После статьи на хабре про суп, задался вопросом.
Что значит два восклицательных знака? Это только для приведения к логическому типу? 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, время: 08:11. |