I am trying to figure out this operator on JS -
'string' ^= 'string';
But I can not find ant information. Is that a comparison or assignment ?
Thanks.
I am trying to figure out this operator on JS -
'string' ^= 'string';
But I can not find ant information. Is that a comparison or assignment ?
Thanks.
myVar ^= 5
is the same as myVar = myVar ^ 5
. ^
is the bitwise xor
operator
Let's say myVar
was set to 2
Exclusive "or" checks the first bit of both numbers and sees 1,0 and returns 1 then sees 0,1 and returns 1 and sees 1,0 and returns 1.
Thus 111 which converted back to decimal is 7
So 5^2
is 7
var myVar = 2;
myVar ^= 5;
alert(myVar); // 7
^
(caret) is the Bitwise XOR (Exclusive Or) operator. As with more common operator combinations like +=
, a ^= b
is equivalent to a = a^b
.
See the Javascript documentation from Mozilla for more details.
x ^= y
is bitwise XOR and shorthand for x = x^y
- and so is technically an "assignment" to answer your question. And to be precise the single operator '^' indicates the bitwise XOR.
As d'alar'cop (and several others by now) already pointed out, this means something called XOR
. I always hate to read a wikipedia explanation, so I'm going to put another explanation here:
'XOR' means 'eXclusive OR'. What is that? First an example:
11000110 -- random byte
10010100
--------- ^ -- XOR
01010010
XOR is some bitwise operation, returning two if one of two bits is 1 and the other 0. If they're both 1, it's 'and', not 'exclusive or' ('normal or' would allow two 1's).