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?