我在 Chrome 开发者控制台上尝试了以下代码
array = [1,2,3]
[1, 2, 3]
copyarray = array
[1, 2, 3]
copyarray = [1]
[1]
array
[1, 2, 3]
copyarray = array
[1, 2, 3]
copyarray
[1, 2, 3]
copyarray.pop()
3
copyarray
[1, 2]
array
[1, 2]
copyarray+''
"1,2"
copyarray = copyarray +''
"1,2"
array
[1, 2]
谁能告诉我当我在“copyarray”变量上使用某些数组方法(如 pop splice 等)时“array”的值发生变化的原因吗?
最佳答案
因为当您将一个变量的值分配给另一个变量时,您正在创建对(单个)数组对象的引用的副本。 JavaScript 不提供用于制作对象的完整副本的原始操作。最接近的可能是数组上的 .slice()
方法:
var copyarray = array.slice(0);
现在有两个数组,对一个数组的修改不会影响另一个数组。
关于javascript - 复制 JavaScript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21366619/