最近在某个前端交流群中有人提出一个问题,js数组中有最大长度吗?它的最大长度是多少?
array的最大长度为Math.pow(2,32)-1,2的32次方-1.
这是 是网上主流的说法,我决定手动测试一下,单纯的循环肯定是不现实的,我决定直接定义数组的length的长度来进行测试。
很明显,这个数组并没有超过最大长度,所以length能正常输出。
而当我们把这个值变成Math.pow(2.32)的时候
输出的是无效的数组长度,由此可知,js数组最大长度确实是2的32次方-1;
根据ECMA-262第5版规范,数组的最大长度由一个无符号32位整数绑定,原因是ToUint 32抽象操作,因此最长的数组可以有2。32-1=4 294 967 295=42.9亿元素。
记录一件有意思的事