Javascript函数传参时:值传递和引用传递的区别
首先我先说说JavaScript的函数,在JavaScript中我们为了实现某个功能且这个功能能够重复使用或选择使用;此时就需要创建一个由许多代码组成的功能块,这个功能块就是一个函数。当我们需要用这个函数时,得向函数中传参。以下我就我所学知识来分析分析函数转参时它的值传递和引用传递的相关知识以及其区别
值传递:他的数据类型String、Number、Boolean、null、undefined;它是一个单项传递。当函数执行向函数内传递参数(实参),函数接受后(形参)被调用时,修改形参的值会影响实参;如下代码可以证明
var num1=88; var num2=num1;//num1传给num2时把值复制到num2新开的空间中 num2=100; console.log(num1);//88 console.log(num2);//100
注:当num2获取num1时,num2重新开启了一个空间存储值和地址,此时重新定义一个值也影响其。
引用传递:它的数据类型Array、object、function。当函数的形参接受实参的隐式引用,把引用类型传入函数中,此时参数通过值传递获取指针,当修改实参形参也会被修改,因此他俩指针同时指向一个对象;如下代码证明
var arr1=[12,13,14]; var arr2=arr1; console.log(arr2[1]);//13 arr1[1]=31; console.log(arr2[1]);//31
因此二者区别:
1、值传递的值直接存储在变量访问的位置也就是说在栈中保存具体的值(值就是地址,地址就是值)
2、引用传递只是在栈只中保存指针(地址是地址,值就是值只要是地址不变,值可以自由修改)
3、值传递和引用传递都是在栈中赋值,因此他俩指向的地址也应相同
以上仅个人观点,

浙公网安备 33010602011771号