W jaki sposób !! ~ (nie tylda / tylda bang) zmienia wynik wywołania metody „zawiera / zawiera” Array?

Jeśli przeczytasz komentarze w jQueryinArray stronatutaj, jest interesująca deklaracja:

<code>!!~jQuery.inArray(elm, arr) 
</code>

Teraz uważam, że podwójny wykrzyknik zamieni wynik na typboolean, z wartościątrue. Czego nie rozumiem, to co to jest tylda (~) operator w tym wszystkim?

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

Refaktoryzacjaif komunikat:

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

Awaria:

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

Zauważyłem też, że jeśli umieściłem tyldę z przodu, to wynik-2.

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

Nie rozumiem tutaj celu tyldy. Czy ktoś może to wyjaśnić lub skierować do źródła?

questionAnswers(13)

yourAnswerToTheQuestion