未定義のビット演算子のロジックは何ですか???
var x;
console.log(x); // undefined
console.log(x^7); // 7
console.log(7^x); // 7
console.log(x|7); // 7
console.log(7|x); // 7
console.log(7&x); // 0
console.log(x&7); // 0
console.log(~x); // -1
console.log(x*2); // NaN
console.log(x/2); // NaN
console.log(x+2); // NaN
console.log(x-2); // NaN
NaN にはある程度の意味があります。undefined -2 は実際には「数値ではない」ためです。しかし、ビットごとの演算子と未定義のロジックには従いません。