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

作者:逆战班 XA_赵明明
一、基本类型、引用类型
1:基本类型: undefined、Null、Boolean、Number、String、NaN…,其中undefined、null、NaN是JS中的三大特殊值。
2:三大特殊值undefined、null、NaN区别:
(1)undefined:声明未赋值。参与数学运算,得到NaN。
论JS函数传参时:值传递与引用传递的区别_第1张图片
论JS函数传参时:值传递与引用传递的区别_第2张图片
(2)null:是一个空对象。参与运算时,变为0。
论JS函数传参时:值传递与引用传递的区别_第3张图片
论JS函数传参时:值传递与引用传递的区别_第4张图片
(3)NaN:非法的数值运算会得到NaN。NaN和任何数值都不相等,包括它自己,true不是数字,false为数字。带有隐式类型转换,是严格转换。
NaN和任何数值都不相等,包括它自己
论JS函数传参时:值传递与引用传递的区别_第5张图片
IsNaN()检测是否为NaN, true为是,false为不是。
论JS函数传参时:值传递与引用传递的区别_第6张图片

3、引用类型: objeect也称对象(由多个值构成,)。
两种类型在使用上的区别:
论JS函数传参时:值传递与引用传递的区别_第7张图片
论JS函数传参时:值传递与引用传递的区别_第8张图片
4值传递。
函数调用中,传递是一个数值,我们称为 “值传递”。
函数调用中,传递是对象,一般称为 “引用传递”。
论JS函数传参时:值传递与引用传递的区别_第9张图片
引用值:对象变量它里面的值是这个对象在堆内存中的内存地址。因此如果按引用传递,它传递的值也就是这个内存地址。在函数中,函数后面括号里的变量为“形式参数”----称为:“形参”。在主调函数时,调用一个函数,被调函数后面中的参数为“实际参数”-----称为:“实参”。
论JS函数传参时:值传递与引用传递的区别_第10张图片
首先把a的值传到change函数内,obj.num = ‘3’;后a.name被修改为3; a的地址被换成b的地址;返回此时的a中a.num。引用类型复制的是指针的指向。
论JS函数传参时:值传递与引用传递的区别_第11张图片
并没有显示两个’ccc’。这里是函数内部重写了obj,重写的obj是一个局部对象。当函数执行完后,立即被重写。
引用值:对象变量它里面的值是这个对象在堆内存中的内存地址。因此如果按引用传递,它传递的值也就是这个内存地址。那么var obj = new Object();会重新给obj分配一个地址,那么它就不在指向有name = ‘aaa’;属性的内存单元了。相当于把实参obj和形参obj的地址都改了,那么最终就是输出两个ccc了。
论JS函数传参时:值传递与引用传递的区别_第12张图片
首先把a的值传到change函数内,obj.num = ‘3’;后a.name被修改为3; a的地址被换成b的地址;返回此时的a中a.num。

你可能感兴趣的:(函数参数传递)