关于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(ate()); //输出为 27
//将date引用本身复制一份,传递到passReference,注意date所指向的对象并没有被复制
passReference(date);
alert(ate()); //输出为12
//同上
changeReference(date);
alert(ate()); //输出还为12
}
function passReference(da)
{
//由于da和原引用指向的是同一个对象,在function外,通过原有的引用访问到的将是对象的'日期属性值,将是修改之后的值.
ate(12);
}
function changeReference(da)
{
//此时da引用实际上是原引用的一份copy,将引用本身重新赋值,将不会影响原引用
da= new Date(2007,05,11);
//将da引用指向一个新的对象,此时原引用指向的还是原来的对象
alert(ate()); // 输出为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中一样是同一性.
-
水星路由器设置wap
用户请根据自己的宽带接入方式,按照上面介绍的方法,安装你的水星(Mercury)MW153R路由器。以下是小编为大家整理分享的水星路由器设置wap,欢迎阅读参考。水星路由器设置wap本文介绍了水星(Mercury)MW153R无线路由器的安装、上网设置以及无线网络(Wi-Fi)的设置;一台...
-
ASP 时间函数及获取服务器时间的写法
一、常用的ASP时间函数1、now()获取当前系统日期和时间,ASP输出格式:<%=now()%>2、Year(now())获取年份,ASP输出格式:<%=year(now())%>3、Month(now())获取当前月份,ASP输出格式:<%=month(now())%>4、day(now())获取当天数,ASP输出格式:<%=day(now())%>5、hour(now())...
-
JavaScript经典效果集锦
些很实用且必用的小脚本代码:脚本1:进入主页以后自动播放声音脚本2:进入主页后自动最大话,省的去在自己单击了To(0,0)zeTo(lWidth,lHeight)脚本3:显示现在时间的脚本enow脚本4:显示最后修改时间的.脚本e(Modified)脚本5:设为首页,加为收藏,加入频道,启动outlook...
-
JavaScript中的style.cssText使用教程分解
很多人用过r、lay等直接设置元素的.样式属性,但是ext用过的人就不多了。cssText本质是什么?cssText的本质就是设置HTML元素的style属性值。cssText怎么用?复制代码代码如下:lementById("d1")ext="color:red;font-size:13px;";看了这个示例后,相信不说,也知道ext是什...