我正在学习JavaScript,最近遇到了关于JavaScript数组的问题。
JavaScript数组的数字索引被描述为32位,我认为它的最大索引是32的幂减去1,但右边是2的32减去2的幂。 我不知道为什么?有人能告诉我吗?
答案 0 :(得分:1)
发布此信息表明您对最大INDEX为4294967294是正确的,因为它是最大LENGTH -1且最大LENGTH是2 32 -1
所以从0到4294967294你有4294967295个元素
所有JS数组都从0开始
new Array(4294967295)
是您可以定义的最大数组,因为您需要将unsigned int传递给构造函数因此,您可以拥有的最大索引比该
<强> arrayLength 强>
如果传递给Array构造函数的唯一参数是0到2之间的整数 32 -1(包含),则返回一个新的JavaScript数组,其 length 属性设置为该数字(注意:这意味着arrayLength空插槽的数组,而不是具有实际未定义值的插槽)。如果参数是任何其他数字,则抛出RangeError异常。
Wikipedia
的变量的最大值
数字4,294,967,295,相当于十六进制值 FFFFFFFF是计算中32位无符号整数的最大值。因此,它是声明为无符号整数
var arr = new Array(4294967294);
arr[arr.length-1]="one but last";
console.log("Length: "+arr.length,"Index = "+(arr.length-1)+": "+arr[arr.length-1]);
arr.push("Last");
console.log("Length: "+arr.length,"Index = "+(arr.length-1)+": "+arr[arr.length-1]);
arr.push("One too far");
console.log("Length: "+arr.length,"Index = "+(arr.length-1)+": "+arr[arr.length-1]);
答案 1 :(得分:0)
使用Array构造函数创建数组时,可以为其提供可选长度,如下所示:
数组的长度是32位无符号整数。数组的长度范围可以从0到Math.pow(2,32) - 1,即4294967295。