2010-10-24 9 views
4

Можно создать дубликат:
What does the !! operator (double exclamation point) mean in JavaScript?Что такое !! в javascript?

$("#imjavascript").attr('checked', !!$('#mainCheck').attr('checked')); 

, что делать !! имею в виду ?

+0

извините, я не знаю английского слова !! => i can not google – meotimdihia

+0

В чем цель разметки вопроса как дубликата, когда дублирующий вопрос не имеет ответа и заблокирован, что делает невозможным ответить? –

ответ

4

Это двойное отрицание или двойной взрыв, как его называют некоторые (возможно, вероятно, другие имена), он получает свойство и преобразовывает его в логическое. Первый ! принимает обратное значение - в результате получается логическое значение, затем второе принимает обратное значение , которое, поэтому вы получаете логическую обратную сторону, которая представляет собой представление оригинала, а не инверсное оригинала.

+0

+1 даже если вопрос является дубликатом, хорошо поставленный – galambalazs

2

Это идиоматический метод типа, изменяющий булевский конвертируемый небулевой тип на фактический булевский тип. Например, 0 имеет тип Number, но также считается истиной, эквивалентной логическому значению «False». Отрицание - это эвольвентная операция (т. Е. Инвертирует себя), поэтому, используя двойное отрицание, мы получаем одно и то же значение истинности назад, но с собственным булевым типом.

В частности, рассмотрит !(!0), который вычисляет !(True) (как !0 является True), который вычисляется в False - то же самое значение истины как 0, но теперь фактической булева.