我对32位浏览器中JavaScript数字的大小有些困惑。它是否仍表示为64位数字,最大值为2^53?
我对32位浏览器中JavaScript数字的大小有些困惑。它是否仍表示为64位数字,最大值为2^53?
答案完全错误,这取决于引擎。
在V8(Google Chrome、Opera、Node.js)32位中:
适合31位有符号表示法的整数(从-1073741824到1073741823)直接通过嵌入指针来表示。
任何其他数字通常表示为具有64位双精度字段作为数字值的堆对象(类似于Java Double
包装器)。在优化函数中,这些数字可以暂时直接存储在堆栈和寄存器中。此外,某些类型的数组可以“永久性地”直接存储双倍。
在V8 64位中:
与32位相同,除了整数现在可以适合32位有符号表示法(从-2147483648到2147483647),而不是31位。