参数传入引用类型的数据:函数会将其引用地址赋值给对应的参数,在函数内操作参数会影响到原对象function changeAgeImpure(person) {
person.age = 25; // person 与 alex 的引用是一致的,即指向同一个堆内存
return person;
}
let alex = {
name: 'Alex',
age: 30
};
let changedAlex = changeAgeImpure(alex);
console.log(alex); // { name: 'Alex', age: 25 }
console.log(changedAlex); // { name: 'Alex', age: 25 }
稍微修改修改:function changeAgeAndReference(person) {
person.age = 25;
person = { // 会改变 person 的引用
name: 'John',
age: 50
};
return person;
}
var personObj1 = {
name: 'Alex',
age: 30
};
var personObj2 = changeAgeAndReference(personObj1);
console.log(personObj1); // -> {name: "Alex", age: 25}
console.log(personObj2); // -> {name: "John", age: 50}