在JavaScript中,参数传递的方式有两种:按值传递(Pass by Value)和按引用传递(Pass by Reference)。
number
、string
、boolean
、null
、undefined
、symbol
)作为参数传递给函数时,传递的是该值的副本。function changeValue(x) {
x = 10;
}
let num = 5;
changeValue(num);
console.log(num); // 输出: 5
在这个例子中,num
是一个原始类型,传递给changeValue
函数的是它的值的副本。函数内部对x
的修改不会影响到num
。
function changeObject(obj) {
obj.name = 'Alice';
}
let person = { name: 'Bob' };
changeObject(person);
console.log(person.name); // 输出: Alice
在这个例子中,person
是一个对象,传递给changeObject
函数的是它的引用。函数内部对obj
的修改会影响到person
。
Object.assign
或扩展运算符(...
)来创建浅拷贝,或使用JSON.parse(JSON.stringify(obj))
来创建深拷贝。function changeObjectWithoutSideEffects(obj) {
let newObj = { ...obj }; // 浅拷贝
newObj.name = 'Alice';
return newObj;
}
let person = { name: 'Bob' };
let newPerson = changeObjectWithoutSideEffects(person);
console.log(person.name); // 输出: Bob
console.log(newPerson.name); // 输出: Alice
通过这些方法和理解,可以更好地控制JavaScript中参数传递的行为,避免不必要的副作用和错误。
没有搜到相关的沙龙