2

JavaScript 是否优化了存储在内存中的变量的大小?例如,具有布尔值的变量会比具有整数值的变量占用更少的空间吗?

基本上,将以下数组:

var array = new Array(8192);
for (var i = 0; i < array.length; i++)
  array[i] = true;

在计算机内存中小于:

var array = new Array(8192);
far (var i = 0; i < array.length; i++)
  array[i] = 9;
4

2 回答 2

1

简短的回答:是的。

布尔值通常(取决于用户代理和实现)将占用 4 个字节,而整数将占用 8 个字节。

查看另一个 StackOverflow 问题,了解其他人如何设法测量 JS 中的内存占用:JavaScript 对象大小

编辑:ECMAScript 规范的第 8.5 节规定如下:

Number 类型正好有 18437736874454810627 个值,代表二进制浮点算术的 IEEE 标准中指定的双精度 64 位格式 IEEE 754 值

...因此,无论实现如何,所有数字都应该是 8 个字节。

于 2012-07-10T20:36:19.307 回答
0

嗯,js只有一种数字类型,就是64位浮点数。字符串中的每个字符都是 16 位(src: douglas crockford's , javascript the good parts )。因此,布尔值的处理可能是特定于解释器实现的。如果我没记错的话,V8 引擎肯定会将“布尔”对象作为“c bool”处理。

于 2012-07-10T22:18:24.260 回答