是不是只要内存允许,就可以一直往里面加数据
数组在内存中数据结构是栈
如果数组中的元素是值类型那么,在数组对应索引中的数据就是这个值类型的数据,如果元素是引用类型那么就会,将这个引用类型的指针压入栈中。
也就是说这个栈中只会存在 值类型数据 or 引入类型指针
数组的最大长度是2^32-1
如果一个值类型数据或引入类型指针在内存中可以是无限的。
那么这个数组数据大小就是无限。
但是,浏览器应该都会给值类型相应的数据上限。
所以我认为最大应该是(2^32-1) * (最大值类型数据 > 最大指针数据 ? 值 : 指针 )而并非无限。
个人观点
最大为 2^32-1,超过就会报错
我们知道可以用 new Array(n)
,这样的方法声明指定长度的数组,n为正整数
然后在控制台试试下面这段代码
var arr = new Array(Math.pow(2,32)-1); //不会报错
var arr = new Array(Math.pow(2,32));//报错,Invalid array length
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
《JS高级程序设计》 P88