Как: Оператор ~?
Я не могу 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.
Ответ 4
~ является побитовым оператором NOT. Он будет инвертировать биты, которые составляют значение сохраненной переменной.
http://en.wikipedia.org/wiki/Bitwise_operations_in_C#Bitwise_NOT_.22.7E.22_.2F_one.27s_complement_.28unary.29