In javascript, if I write:
var a = 6;
var b = 4;
a ^= b ^= a ^= b;
console.log(a, b);
the result will be 0 6.
but if I write:
var a = 6;
var b = 4;
a ^= b;
b ^= a;
a ^= b;
console.log(a, b);
the result will be 4 6. And it's correct.
Why this single-line way of XOR swapping in javascript does not work?
And why it works fine in C++?