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

时间:2014-06-07 04:43:39

标签: javascript arrays recursion

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

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

如果您在添加时检查x[0][0][0] ....尽可能多的[0]索引,它仍会返回单项数组。

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

3 个答案:

答案 0 :(得分:4)

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

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

不是真的。 x是一个数组。数组中的第一个元素指向与x本身相同的内存位置。没什么,没什么。

但是,你可以做到

x[0][0][0]

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

答案 1 :(得分:0)

在任何级别获得x时都不会生成任何内容。插入x作为参考。

取消引用x [0]时,得到x。

x == x [0];

答案 2 :(得分:0)

这里没有循环。您正在创建一个空数组并将其设置为x。然后下一行x.push(x);只是将一个空数组推入x。如果你再次添加do x.push(x);,它会将数组推入x,在第一个索引中有一个空数组。