例如,如果我这样做
一个[百万] = 1;
它会使用1000000个元素的内存还是只用于这个?
一个[百万] = 1;
它会使用1000000个元素的内存还是只用于这个?
解决方法
在ECMAScript标准(第15.4节)中,关于数组的唯一特殊之处在于自动更新了length属性(以及一堆特定于Array的原型函数):
Array objects give special treatment to a certain class of property names. A property name P (in the form of a String value) is an array index if and only if
ToString(ToUint32(
P))
is equal to P andToUint32(
P)
is not equal to 232−1.
…
Every Array object has alength
property whose value is always a nonnegative integer less than 232. The value of thelength
property is numerically greater than the name of every property whose name is an array index; …
除此之外,Array只是一个Object,这意味着它可以被视为一个关联数组,although you shouldn’t.
现在,JS引擎应检测阵列是密集还是非常稀疏,并在内部使用线性或关联数组之间切换.在您的情况下,JS引擎不会分配一百万个元素.