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