Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数组的值推送到同一数组中。它能有多深?为什么';浏览器不会崩溃吗?_Javascript_Arrays_Heap - Fatal编程技术网

Javascript 将数组的值推送到同一数组中。它能有多深?为什么';浏览器不会崩溃吗?

Javascript 将数组的值推送到同一数组中。它能有多深?为什么';浏览器不会崩溃吗?,javascript,arrays,heap,Javascript,Arrays,Heap,我想知道如果我把一个数组的值推到同一个数组中会发生什么。我做到了,没有错误,也没有任何问题。它只是返回了一个数组,里面有相同的数组,以此类推 我知道数组是通过引用传递的,但是指向数组的指针仍然必须占用一些内存 那么它到底有多深呢?如果浏览器需要的话,它们是如何处理的呢 let arr = [1, 2, 3]; arr.push(arr); 数组是JS中的对象,对象通过引用传递 如果创建一个对象,并将属性设置为对该对象的引用,则该对象将是无限的 您的浏览器不会崩溃,因为对象只存储一次,并且每个级

我想知道如果我把一个数组的值推到同一个数组中会发生什么。我做到了,没有错误,也没有任何问题。它只是返回了一个数组,里面有相同的数组,以此类推

我知道数组是通过引用传递的,但是指向数组的指针仍然必须占用一些内存

那么它到底有多深呢?如果浏览器需要的话,它们是如何处理的呢

let arr = [1, 2, 3];
arr.push(arr);

数组是JS中的对象,对象通过引用传递

如果创建一个对象,并将属性设置为对该对象的引用,则该对象将是无限的

您的浏览器不会崩溃,因为对象只存储一次,并且每个级别加载相同的对象,因此不会占用太多空间

以下等式是正确的:

arr[3] === (arr[3])[3]
因此,
arr[3][3]
将被解释为:

Load arr(arr)[3][3]
加载arr[3]=>加载arr(arr[3])[3]
加载arr[3]=>加载arr(arr[3])
输出:arr(arr)

我知道数组是通过引用传递的
那么它到底有多深?
这个问题意味着你没有完全理解。副本用一个对象解释了这一点,但想法是一样的。“它有多深”请尝试:
arr[3][3][3][3][3][3][3][3]