The biggest gotchas with whole numbers in JS (IEE754 64-bit floats) is that in JS all bitwise operations are performed on a 32-bit integer under the hood... in practice this means you can do a bitwise operation on anything and it will be coerced into a 32-bit integer, either first via the parseInt(X,10) path, or becomes an empty 0 value.
It really isn't unique to JS, and there are several bignum libraries that can/will help.
It really isn't unique to JS, and there are several bignum libraries that can/will help.