论JS函数传参时:值传递与引用传递的区别

一、基本类型、引用类型
1:基本类型: undefined、Null、Boolean、Number、String、NaN…,其中undefined、null、NaN是JS中的三大特殊值。
2:三大特殊值undefined、null、NaN区别:
(1)undefined:声明未赋值。参与数学运算,得到NaN。

(2)null:是一个空对象。参与运算时,变为0。

(3)NaN:非法的数值运算会得到NaN。NaN和任何数值都不相等,包括它自己,true不是数字,false为数字。带有隐式类型转换,是严格转换。

IsNaN()检测是否为NaN, true为是,false为不是。

3、引用类型: objeect也称对象(由多个值构成,)。
两种类型在使用上的区别:

4值传递。
函数调用中,传递是一个数值,我们称为 “值传递”。
函数调用中,传递是对象,一般称为 “引用传递”。

引用值:对象变量它里面的值是这个对象在堆内存中的内存地址。因此如果按引用传递,它传递的值也就是这个内存地址。在函数中,函数后面括号里的变量为“形式参数”----称为:“形参”。在主调函数时,调用一个函数,被调函数后面中的参数为“实际参数”-----称为:“实参”。

首先把a的值传到change函数内,obj.num = ‘3’;后a.name被修改为3; a的地址被换成b的地址;返回此时的a中a.num。引用类型复制的是指针的指向。

并没有显示两个’ccc’。这里是函数内部重写了obj,重写的obj是一个局部对象。当函数执行完后,立即被重写。
引用值:对象变量它里面的值是这个对象在堆内存中的内存地址。因此如果按引用传递,它传递的值也就是这个内存地址。那么var obj = new Object();会重新给obj分配一个地址,那么它就不在指向有name = ‘aaa’;属性的内存单元了。相当于把实参obj和形参obj的地址都改了,那么最终就是输出两个ccc了。

首先把a的值传到change函数内,obj.num = ‘3’;后a.name被修改为3; a的地址被换成b的地址;返回此时的a中a.num。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值