Если вы читаете комментарии на inArray
странице jQuery здесь , есть интересное объявление:
!!~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
Я не понимаю, зачем здесь тильда. Может кто-нибудь объяснить это или указать мне на ресурс?