Javascript数字是否在32位浏览器中表示为64位数字?

Nic*_*ick 3 javascript performance

我对32位浏览器中javascript号码的大小有点困惑.它仍然表示为64位数字,最大值为2 ^ 53吗?

Guf*_*ffa 6

是.Javascript中的数字是双精度浮点数.不论它运行的平台如何都是一样的.


Esa*_*ija 6

答案不能错,它确实取决于引擎.

在V8(谷歌Chrome,Opera,Node.js)32位:

符合31位有符号表示的整数(从-1073741824到1073741823)直接通过将它们嵌入指针中来表示.

任何其他数字通常表示为一个堆对象,它具有64位双精度值作为数值的字段(考虑Java Double包装器).在优化的功能中,这些数字可以直接临时存储在堆栈和寄存器中.某些类型的阵列也可以"永久地"直接存储双打.

在V8 64位:

与32位相同,除了整数现在可以适合32位有符号表示(从-2147483648到2147483647)而不是31位.