数组的值随着对象的值而变化



当我使用push方法将对象放入数组中,然后更改对象的值时,数组中对象的值也会发生变化。如何预防呢?

function onLoad() {
let array = []
let object = {}
object[1] = [1,2]
array.push(object)
object[1] = [1,3]
console.log(array)
}
onLoad();

我想代码console[{1,2}],但它会控制台[{1,3}]。

有人知道如何解决这个问题吗?

在JavaScript中,复杂数据类型(对象和数组)通过引用复制,而基本数据类型(字符串、数字和布尔值)通过值复制

简单地说,通过引用传递不会创建一个副本,而是指向相同的内存。所以原来的对象和数组将会改变

按值复制将创建一个值的副本,因此原始值不会改变

function change(array1){
array1[0] = "changed";
}
var original = ["original"]
change(original)
console.log(original)

function changePrimitive(input) {
input = "changed"
}
var original = "original"

changePrimitive(original)

console.log(original);