Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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_Object_Multidimensional Array - Fatal编程技术网

Javascript 覆盖一个值的无限多维数组

Javascript 覆盖一个值的无限多维数组,javascript,arrays,object,multidimensional-array,Javascript,Arrays,Object,Multidimensional Array,我正在用数组来解释,我遇到了这种奇怪的现象。我在控制台中这样做: var x = ['Paul Irish', 'Alex Sexton', 'Nicholas Zakas'], y = x, z = y; y[1] = x[0]; // we're trying to switch Alex with Paul z[2] = y[0]; // we're trying to switch Nick with Paul x[2] = x; // whoops a typ

我正在用数组来解释,我遇到了这种奇怪的现象。我在控制台中这样做:

    var x = ['Paul Irish', 'Alex Sexton', 'Nicholas Zakas'],
    y = x,
    z = y;

y[1] = x[0]; // we're trying to switch Alex with Paul
z[2] = y[0]; // we're trying to switch Nick with Paul
x[2] = x; // whoops a typo
并在每个内部键2中创建无限数组

// ["Paul Irish", "Paul Irish", Array[3]]: // infinite arrays
然后我为其中一个MD值指定了另一个名称:

x[2][2][2] = 'Jenn Schiffer';
但没想到:

x[2][2][2] // undefined
x[2][2][1] // undefined
x[2][2][0] // n
x[2][2]    // n
x[2][1]    // e
x[2][0]    // J
x[2]       // Jenn Schiffer
x[1]       // Paul Irish
x[0]       // Paul Irish
我无法解释这些结果(在最新的Chrome&FF上测试)。 分配的字符串如何成为分散到其他键中的数组

你什么时候做的

x[2] = x;
x
实际上已经成为

[ 'Paul Irish', 'Paul Irish', [Circular] ]
这意味着
x
的第二个元素是
x
仅当您执行此操作时

x[2][2][2] = 'Jenn Schiffer';
x[2]
仅指
x
。因此,
x[2][2]
再次仅指
x
。因此,表达式,
x[2][2][2]
x[2]
相同。你可以这样理解

x[2][2][2] => (x[2])[2][2] => (x)[2][2] => (x[2])[2] => x[2]
您基本上是通过分配一个
x[2][2][2]='Jenn Schiffer'的字符串来删除循环引用。此时,
x

[ 'Paul Irish', 'Paul Irish', 'Jenn Schiffer' ]
现在,当你

x[2][2][2]
x[2]
'Jenn Schiffer'
x[2][2]
n
'n'[2]
未定义的