Как !!!~ (не тильда/банг банг тильда) изменяет результат вызова метода 'contains/included' Array?

Если вы прочитаете комментарии на странице jQuery inArray здесь, там есть интересное объявление:

!!~jQuery.inArray(elm, arr) 

Теперь, я полагаю, двойной восклицательный знак преобразует результат к типу boolean, со значением true. Я не понимаю, зачем во всем этом оператор тильда (~)?

var arr = ["one", "two", "three"];
if (jQuery.inArray("one", arr) > -1) { alert("Found"); }

Рефакторинг оператора if:

if (!!~jQuery.inArray("one", arr)) { alert("Found"); }

Разбивка:

jQuery.inArray("one", arr)     // 0
~jQuery.inArray("one", arr)    // -1 (why?)
!~jQuery.inArray("one", arr)   // false
!!~jQuery.inArray("one", arr)  // true

Я также заметил, что если поставить тильду впереди, то результат будет -2.

~!!~jQuery.inArray("one", arr) // -2

Я не понимаю назначения тильды здесь. Может ли кто-нибудь объяснить это или указать мне на ресурс?

93
задан Salman A 28 January 2018 в 14:14
поделиться