JavaScript中数组的最大深度

Lap*_*pys 5 javascript arrays

所以,我尝试有一天,当我在堆栈溢出碰到这个问题就来了,并得到了好奇:在Javascript中数组的最大尺寸(在JavaScript中数组的最大大小).

问题是,JavaScript中数组最大深度是多少?

深度我的意思是你可以在一个数组中嵌入一个数组,直到JavaScript放弃?

[1]           // Depth Level: 1
[1, [2]]      // Depth Level: 2
[1, [2, [3]]] // Depth Level: 3
[1, [...]]    // Depth Level: x?
Run Code Online (Sandbox Code Playgroud)

它是否依赖于机器,是否基于编译器?

不,我不确定这是否有任何实际用途,但它仍然是我很好奇的东西.

tad*_*man 3

通常,您可以嵌套不同的数组,直到内存耗尽,但您可以嵌套相同的数组并获得有效的无限深度数组。

var x = [ ];
x.push(x);

x[0][0][0](...)[0]; // Now valid
Run Code Online (Sandbox Code Playgroud)

这在大多数调试器中都会出现[ [Circular] ],因为它是所谓的“循环引用”,就像数组包含自身一样。

这类似于拥有自引用对象的方式:

var x = { };
x.x = x;

// { x: [Circular] }

x.x.x.x.x.x.x.x.x(...).x; // Now valid
Run Code Online (Sandbox Code Playgroud)

JavaScript 本身并不真正关心某件事的深度,该语言没有内在的限制。有时循环引用是一种特征,就像x.yx为了方便而引用的东西,一种显示相互关联的方式。从技术上讲,这是无限深度的,但您不太可能以这种方式使用它。

这是该现象的一个简单示例:

var x = { };
var y = { };

x.y = y;
y.x = x;

x.y.x.y.x.y; // Pointless, but valid.
Run Code Online (Sandbox Code Playgroud)