我列出了两个Array,一个是条目,第二个是空的。 确定一个单元格,第一个数组[0]到第二个数组。并使用applye方法pop()为第二个Array。为什么是单元格,第一个数组也改变了它的值。
var t = [[1,1,1], [1,1,1,1,1], [1,1,1,1]];
var t1 = t[0];
t1.pop();
console.log(t[0]);

结果1.1 它为什么会发生? 感谢。
答案 0 :(得分:1)
pop()
pop()方法从数组中删除最后一个元素并返回该元素。此方法更改数组的长度。
var t = [[1,1,1], [1,1,1,1,1], [1,1,1,1]];
var t1 = t[0];
t1.pop(); // this is modifying the array in t[0]
console.log(t[0]);

为避免这种情况,您可以在执行函数pop()
var t = [[1,1,1], [1,1,1,1,1], [1,1,1,1]];
var t1 = t[0].slice(); // Creating a copy of array in t[0]
t1.pop();
console.log(t[0]);

答案 1 :(得分:0)
我想阐明这个问题的另一个方面。
数组是JavaScript中的引用类型。这意味着指针用于在javascript中的内存中定位数组。所以当你分配
var t1 = t[0];
您要将same memory address
指向的t[0]
分配给t1
。因此,t[0]
和t1
基本上指向{{1} }。这就是为什么从memory
弹出值时,它也会影响t1
指向的同一数组。这就是t[0]
值也会改变的原因。