一个值被覆盖的无限多维数组
Infinite Multidimensional Array where one value is overwritten
我正在尝试使用数组进行解释,但我遇到了这种怪事。我在控制台中这样做了:
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]
是 undefined
。
我正在尝试使用数组进行解释,但我遇到了这种怪事。我在控制台中这样做了:
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]
是 undefined
。