项目开发中我们经常遇到,把一个对象作为参数传递给函数,在函数内部做了一些操作后,发现原本传递的对象被改变了,举例如下:
function test(person) { // 形参person实际是传的p1的指针(地址)person.age = 26,p1也会被改变
person.age = 26
person = {
name: 'yyy',
age: 30
}
return person
}
const p1 = {
name: 'yck',
age: 25
}
const p2 = test(p1)
console.log(p1) // -> {age: 26, name: "yck"}
console.log(p2) // -> {age: 30, name: "yyy"}
可以看到p1对象的值已经被改变了,原因是,形参person实际是传的p1的指针(地址)person.age = 26,p1也会被改变,而p2相当于是重新定义了一个person,并return出去。