参数传递的两种方式
- 值传递(基本类型)
就像给你一份复印件,你改了复印件,不影响原件。
let a = 10; // 原价:10元
function changePrice(price) {
price = 20; // 我改了复印件上的价格
console.log("函数内价格:", price); // 20
}
changePrice(a);
console.log("函数外原价:", a); // 还是10,没变!- 引用传递(对象、数组)
就像给你钥匙,你用钥匙进屋改了东西,房子真的变了。
let house = {
color: "白色",
size: "100平"
}; // 一座房子
function paintHouse(h) {
h.color = "蓝色"; // 用钥匙进去刷墙
console.log("函数内颜色:", h.color); // 蓝色
}
paintHouse(house);
console.log("函数外颜色:", house.color); // 也变成蓝色了!子程序的运行依赖参数传递所使用的方法(子程序的执行结果会受到参数传递方式的影响)
更通俗的解释
想象你要让同事帮你处理一份文件,有两种方式:
给你复印件(传值)
同事在复印件上修改,不影响你的原件
子程序对参数的修改不会影响原数据
给你原文件的位置(传引用)
同事直接修改原文件,你的文件内容会改变
子程序对参数的修改会影响原数据
同样的子程序,采用不同的参数传递方式,会产生不同的运行效果。
评论 (0)