Reputation: 7532
I can't google the ~ operator to find out more about it. Can someone please explain to me in simple words what it is for and how to use it?
Upvotes: 24
Views: 2996
Reputation: 27321
One usage of the ~ (Tilde) I have seen was getting boolean for .indexOf().
You could use: if(~myArray.indexOf('abc')){ };
Instead of this: if(myArray.indexOf('abc') > -1){ };
Additional Info: The Great Mystery of the Tilde(~)
Search Engine that allows special characters: Symbol Hound
Upvotes: 5
Reputation: 12561
~ is a bitwise NOT operator. It will invert the bits that make up the value of the stored variable.
Upvotes: 1
Reputation: 93674
It is a bitwise NOT.
Most common use I've seen is a double bitwise NOT, for removing the decimal part of a number, e.g:
var a = 1.2;
~~a; // 1
Why not use Math.floor
? The trivial reason is that it is faster and uses fewer bytes. The more important reason depends on how you want to treat negative numbers. Consider:
var a = -1.2;
Math.floor(a); // -2
~~a; // -1
So, use Math.floor
for rounding down, use ~~
for chopping off (not a technical term).
Upvotes: 29