JavaScript'var'数据/对象大小

时间:2012-07-10 20:24:48

标签: javascript variables memory-management size

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;

2 个答案:

答案 0 :(得分:1)

简短回答:是的。

布尔值一般(并且它将取决于用户代理和实现)将占用4个字节,而整数将占用8个。

查看其他StackOverflow问题,了解其他人如何设法测量JS中的内存占用:JavaScript object size

编辑:ECMAScript Spec的第8.5节说明如下:

  

Number类型具有正好18437736874454810627个值,表示IEEE二进制浮点运算标准中规定的doubleprecision 64位格式IEEE 754值

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

答案 1 :(得分:0)

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