数値リテラルの表記に誤りがあると通常は SyntaxError が発生しますが、一部のパターンではエラーにならず NaN として解釈されます。
alert (1e2x); // NaN
alert (1e2.0); // NaN
16進数リテラル 0x80000000 ~ 0xffffffff、0x8000000000000000 ~ 0xffffffffffffffff は負数になります。
0x0 ~ 0xffffffff は32ビット値を符号付き整数として、0x100000000 ~ 0xffffffffffffffff は64ビット値を符号付き整数として解釈しているのかもしれません。
alert (0x7fffffff); // 2147483647
alert (0x80000000); // -2147483648
alert (0xffffffff); // -1
alert (0x100000000); // 4294967296
alert (0x7fffffffffffffff); // 9.22337203685478E18
alert (0x8000000000000000); // -9.22337203685478E18
alert (0xffffffff00000000); // -4294967296
alert (0xffffffffffffffff); // -1