📅  最后修改于: 2023-12-03 14:42:29.955000             🧑  作者: Mango
在 JavaScript 中,函数的参数传递可以按值调用或按引用调用。理解它们的区别对于编写高效的代码非常重要。
按值调用是指将实际参数的值复制一份,然后传递给函数中的形式参数。在函数内部对形式参数进行修改不会影响到实际参数。
function modifyValue(num) {
// 修改形式参数
num = num + 1;
console.log(num); // 输出 6
}
var myNum = 5;
modifyValue(myNum); // 传递实际参数
console.log(myNum); // 输出 5
在上面的例子中,形式参数 num
被修改为原值加一,但实际参数 myNum
的值保持不变。这是因为 num
在函数内部创建了一个新的变量副本。
按引用调用是指将实际参数的引用传递给函数中的形式参数。在函数内部对形式参数进行修改会同时修改实际参数。
function modifyArray(arr) {
// 修改形式参数
arr.push(4);
console.log(arr); // 输出 [1, 2, 3, 4]
}
var myArr = [1, 2, 3];
modifyArray(myArr); // 传递实际参数
console.log(myArr); // 输出 [1, 2, 3, 4]
在上面的例子中,形式参数 arr
是对实际参数 myArr
的引用。因此,对 arr
进行修改会修改原始数组 myArr
。
需要注意的是,在按引用调用时,如果将形式参数重新分配为另一个对象,它不会影响到实际参数自身。
function modifyObject(obj) {
// 修改形式参数
obj = {};
obj.name = "John";
console.log(obj); // 输出 { name: "John" }
}
var myObj = { name: "Alice" };
modifyObject(myObj); // 传递实际参数
console.log(myObj); // 输出 { name: "Alice" }
在上面的例子中,形式参数 obj
被重新分配为一个新的空对象,但实际参数 myObj
保持不变。
在 JavaScript 中,按值调用和按引用调用对于函数参数传递起着重要作用。了解它们的区别可以帮助你避免出现意料之外的结果。
根据不同的需求选择适当的参数传递方式是编写高效和可靠代码的关键。