您好,欢迎访问一九零五行业门户网

Js从头学起(基本数据类型和引用类型的参数传递详细分析)_基础知识

1、基本数据类型传递参数:
复制代码 代码如下:
funciton addten(num){
num+=10;
return num;
}
var count=20;
var result=addten(count);
alert(count);//20
alert(resullt);//30
执行结果是:20和30。在这段代码中,将变量count当做参数传递给了函数addten,也就是相当于将变量count的值复制给了函数addten的参数。这时addten的参数num可以看做是函数内部的一个变量。在上段代码中,就相当于两个基本数据类型变量之间的值复制。而基本数据类型都有自己独立的内存地址,所以num和count是没有任何关系的,他们只是值相等而已,函数执行完毕后,count的值并没有改变。而函数外面的result是被直接赋值的,所以result的值就是函数的结果30。
2、引用类型传递参数:
复制代码 代码如下:
function setname(obj){
obj.name=lsn;
}
var person=new object();
setname(person);
alert(person.name);//lsn
执行结果是:lsn。在这段代码中,函数setname的作用是给obj对象添加了一个属性name并给该属性赋值为lsn,因为obj是引用类型,所以这里属于是将引用类型person赋值给了obj,也就是说person和obj引用了一个内存地址,所以当给obj新加了属性name时,在函数外面的person也跟着改变,最后person.naem的结果为lsn。
3、引用类型传递参数到底传的是值还是引用?
复制代码 代码如下:
function setname(obj){
obj.name=abc;
obj=new object();
obj.name=bcd;
}
var person=new object();
setname(person);
alert(person.name);// abc
执行结果是:abc。实例3与实例2的区别是在函数中又加了2行代码,在给obj对象新加一个属性name并赋值后 又将obj定义成了一个新的对象(new object()),定义新对象后又name赋上新的值“bcd”。这个时候如果是按引用传递的话,那么最后person对象就会自动修改为指向其name属性为bcd的新对象,但最后显示的却是“abc”,这说明即使在函数内部修改了参数的值,但原始的引用还保持不变。实际上,当在函数内部obj=new object()时 这个新的obj就已经成为函数内部的局部对象了,这个对象会在函数执行完毕后自动销毁。
其它类似信息

推荐信息