当我使用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);