Подтвердить что ты не робот

Двойное восклицание на возвращаемое значение в javascript

Я просматриваю книгу для html 5 и включает этот бит js. Что означает двойной восклицательный знак?

return ! ! document.createElement('video').canPlayType;
4b9b3361

Ответ 1

Оператор ! отрицает, а вторичный ! отрицает результат неотрицательного отрицания. Это в основном выводит все, что находится справа, в логическое (true или false).

!false // true
!!false // false

Итак, если метод определен, то function, который является правдивым, будет введен в true.

document.createElement('video').canPlayType

Таким образом, приведенное выше возвращает функцию. Нам не нужна функция, мы хотим явное логическое, поэтому мы отрицаем ее дважды, и поскольку function не является ложным (0, null, false, empty string, NaN), тогда он возвращает true для браузеров, которые поддерживают этот метод.

!!document.createElement('video').canPlayType // true

Если метод не поддерживается, браузер вернет undefined. !undefined истинно, а !true - false, поэтому !!document.createElement('video').LOL вернет false

Ответ 2

Двойное восклицание - это трюк JavaScript, который возвращает true/false независимо от ввода. В вашем примере, если браузер не поддерживает тег видео, он вернет undefined.! undefined истинно. Итак, undefined является ложным. Если браузер поддерживает видео, он вернет true.!! true также верно. Это избавит вас от необходимости обрабатывать случай undefined.