Сокращалка, удобная для
indexOf(), который возвращает
-1 если не найдено, или индекс от
0 и больше.
Для логики приложения часто бывает нужно узнать только, найдено или нет: т.е.
-1 или иное значение. Можно просто сравнивать
if (a.indexOf(b) > -1) { /* найдено! */ } но иногда хочется короче.
Битовый оператор НЕ ~ хорош тем, что выделяет
-1: только
-1 с этим оператором даст
0. Прочие числа дадут какое-то ненулевое значение.
~(-1) === 0
Остаётся привести значение из численного в булево. Для этого два воскл. знака — два
логических НЕ.
- для варианта «найдено» из числа от
0 и больше получилось тоже ненулевое число, и !! даст true
- для варианта «не найдено» из
-1 получится уникальный 0, и !!0 вернёт false