深入理解JavaScript中的传值与传引用

标签:公司介绍    日期:2018-06-25 09:10    录入:美娱国际平台注册    浏览:

  

[JavaScript,传值,传引用]深入理解JavaScript中的传值与传引用

  

1.传值(by value)  

  

变量的值被复制出一份,与原来的值将不相干,也就是说即使新的值被修改,原来的值也不会改变,在JavaScript中基本类型都是传值的.

  
代码如下:

  
function testPassValue()  
{  
var m=1;  
var n=2;  
//将m,n的值复制一份,传递到passValue  
passValue(m,n);  
alert(m); //将是原有的值  
}  
function passValue(a,b)  
{  
a = a+b; //改变a的值,这里a只是原有值的一份copy  
alert(a);  
}  
  
输出结果:  
3  

  

1  

  

2.传引用(by reference).  

  

引用本身复制一份传给function,引用指向的对象并没有被复制传递美娱国际平台(java中也是如此),在function中,如果改变了对象的属性的值,由于和原来的引用指向的是同一个对象,因此在通过原来的引用访问到的将是修改过的值;  

  

但是如果只是在function中将引用指向一个新的对象,将不会改变原对象的值,改变的只是复制的这一份引用.

  
代码如下:

  
function testPassValue()  
{  
var date = new Date(2006,02,27);  
alert(date.getDate()); //输出为 27  
//将date引用本身复制一份,传递到passReference,注意date所指向的对象并没有被复制  
passReference(date);  
alert(date.getDate()); //输出为12  
//同上  
changeReference(date);  
alert(date.getDate()); //输出还为12  
}  
function passReference(da)  
{  
//由于da和原引用指向的是同一个对象,在function外,通过原有的引用访问到的将是对象的日期属性值,将是修改之后的值.

  
da.setDate(12);  
}  
function changeReference(da)  
{  
//此时da引用实际上是原引用的一份copy,将引用本身重新赋值,将不会影响原引用  
da= new Date(2007,05,11);  

  

//将da引用指向一个新的对象,此时原引用指向的还是原来的对象  
alert(da.getDate()); // 输出为11  
}  

  
3 特殊的String   

  

在JavaScript中,String也传引用的. js中只有charAt方法,而没有对应的修改方法,和java中的String相同,都具有不变性.

  
代码如下:

  
var s1 = "hello";  
var s2 = "hell" + "o";  
if (s1 == s2)  
alert("s1 = s2"); //这句会不会执行? java用的熟的人可能会认为不会执行(这句话我颇有微词,java中也是会执行的!),因为java中的==比较的是同一性. 事实上在js中对String==比较的是值是否相等,所以这句话会执行. 但是对其他的Object == 比较和java中一样是同一性.

  

  

★★★小编:美娱国际 整理文章,欢迎大家转载 ★★★
上一篇:美娱国际平台:javascript 中Cookie读、写与删除操作
下一篇:美娱国际平台:javascript表格控件:Chgrid,简化型
相关文章阅读
点击右上角的分享按钮即可收藏美娱国际平台注册 随时随地与好友一起分享精彩内容噢
最近更新
热门排行