Как: Оператор ~?

Я не могу google оператор ~, чтобы узнать больше об этом. Может кто-нибудь, пожалуйста, объясните мне простыми словами, для чего это и как его использовать?

Ответ 1

Это побитовое НЕ.

Наиболее распространенное использование, которое я видел, - это double bitwise NOT, для удаления десятичной части числа, например:

var a = 1.2;
~~a; // 1

Почему бы не использовать Math.floor? Тривиальная причина в том, что она быстрее и использует меньше байтов. Более важная причина зависит от того, как вы хотите относиться к отрицательным числам. Рассмотрим:

var a = -1.2;
Math.floor(a); // -2
~~a; // -1

Итак, используйте Math.floor для округления, используйте ~~ для измельчения (не технический термин).

Ответ 2

Одно использование ~ (Tilde), которое я видел, становилось логическим для .indexOf().

Вы можете использовать: if(~myArray.indexOf('abc')){ };

Вместо этого: if(myArray.indexOf('abc') > -1){ };

Пример JSFiddle


Дополнительная информация: Великая тайна тильды (~)

Поисковая система, которая допускает специальные символы: Symbol Hound

Ответ 3

Это тильда, и это побитовый оператор NOT.