js中的的参数都是以值传递的 对象的值保存在堆内存中 对象的地址保存在栈内存中

值传递
代码举例:

function swap(a,b){ //定义时,ab为形参
document.write("x="+a+" "+"y="+b+"<br/>");
var temp;
temp = a;
a = b;
b = temp;
document.write("x="+a+" "+"y="+b+"<br/>");
} //函数声明
var x=1,y=2;
document.write("x="+x+" "+"y="+y+"<br/>");
swap(x,y); //调用时自左向右传递,xy为实参,基本数据类型,值传递。函数调用
document.write("x="+x+" "+"y="+y+"<br/>");
结果为

x=1 y=2
x=1 y=2
x=2 y=1
x=1 y=2

 

址传递
代码举例:

function swap(a){ //引用类型
document.write("a[0]="+a[0]+" "+"a[1]="+a[1]+"<br/>"); //有两个名字
var temp;
temp = a[0];
a[0] = a[1];
a[1] = temp;
document.write("a[0]="+a[0]+" "+"a[1]="+a[1]+"<br/>");
}
var A = [1,2]; //此处数组传递的是对象,传递的是A的地址
document.write("A[0]="+A[0]+" "+"A[1]="+A[1]+"<br/>");
swap(A); //实参,A作为对象,object类型,引用(地址)传递
document.write("A[0]="+A[0]+" "+"A[1]="+A[1]+"<br/>");
结果为

A[0]=1 A[1]=2
a[0]=1 a[1]=2
a[0]=2 a[1]=1
A[0]=2 A[1]=1

 

posted @ 2022-04-14 10:17  Luhuhuhu  阅读(174)  评论(0编辑  收藏  举报