js 函数参数按值传递的理解

本文通过实例解析了JavaScript中基本类型与引用类型的参数传递机制。展示了基本类型按值传递的特点,以及引用类型虽按值传递但实为引用地址复制的现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子选自《javas高级程序设计》

1.基本类型按值传递

function addTen(num) {
num += 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20,没有变化

alert(result); //30

在执行addTen(count)时,将20这个值复制一份传递到了num中,addTen运行后,num为30,于是result等于30,而count依然是20

2. 引用类型值的传递

function setName(obj) {
obj.name = "Nicholas";
obj = new Object();
obj.name = "Greg";
}
var person = new Object();
setName(person);

alert(person.name); //"Nicholas"

setName运行后,将person的引用复制一份,使得参数中的obj指向了与person相同的引用,此时修改obj.name的值,person.name也会变,接下来再将obj指向一个新的对象,这个时候person和obj已经没有关系,person.name的值不会改变

总结:函数参数传递过程中之所以说传递值,即相当于复制了一份给参数;假如是引用,则函数中的参数和传入值完全是同一个值,那么后面对obj修改,person的值都会随之改变,而验证结果并没有因为obj指向了新对象就变,所以引用的传递还是按值传递,或者说,把引用的地址复制了一份给参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值