在javascript中,如果出现以下情况:x = []; x.push(x)的;?

T. *_*man 5 javascript arrays recursion

var x = []; 
x.push(x);
Run Code Online (Sandbox Code Playgroud)

x 现在似乎是一个无限深的俄式娃娃式元阵列.

如果你检查x[0][0][0].... [0]添加的索引数量很多,它仍会返回一个项目数组.

但是有一个有限的深度截止?或者是您检查时程序生成的新级别?这是我能想到的唯一两种可能性.

Ada*_*kis 4

var x = []; 
x.push(x);
Run Code Online (Sandbox Code Playgroud)

x 现在似乎是一个无限深的俄罗斯娃娃类型元数组。

并不真地。 x是一个数组。数组中的第一个元素指向与其x自身相同的内存位置。不多不少。

但是,是的,你可以做

x[0][0][0]
Run Code Online (Sandbox Code Playgroud)

想要多少次都可以,因为您只是一遍又一遍地重新引用相同的内存位置。

  • @Prasanth - 我不知道还有什么可说的。 (2认同)
  • @Prasanth:我不会说它们有“实际用途”,它们只是能够在两个方向上遍历某些东西的结果。例如,DOM 节点有一个“children”属性,允许您向下遍历,但也有一个“parentNode”属性,允许您向上遍历。这会创建一个循环引用。 (2认同)