制作火种之前的简单基础讨论--传值和传址

本文探讨了JavaScript中传值与传址的区别,并通过实例解释了如何正确处理对象与基本类型的赋值操作,以避免内存引用导致的问题。

在服务器端js要小心使用对象,比如在vb中最常用的

val=rs("字段")

rs.close

set rs=nothing

val1=val

Response.Write val1‘这是可以的因为这是传值

以上代码换成js的话

var val=rs("字段");

rs.close();

rs=null;

Response.Write(val);//这不会是你想得到的,因为他是对象,是传址的一旦引用地址清空所有的引用都变成undefined

因为rs("字段")这是一个对象 在js中对象是传址的

就是一个传值和传址对js影响极大,那么什么数据是传址什么数据传值 js犀牛书中有一个列表我稍后贴出

以上代码修改成

var val=rs("字段")+"";//变成字符类型用new String()也可以但效率低建议用+""

rs.close();

rs=null;

Response.Write(val);//即使引用内存的地址被清空也没关系了数据已经转换成值,他就是他自己,他不是对别人的引用。

实际弄清楚传值和传址后你会发现这个很有用,因为以前实在弄不清哪些传值,哪些传址引起很多误会。弄清的好处不言自明。

 

附:David Flanagan著的《javascript权威指南》第五版 第56页表

----------------------------------------------------------

   类型    |   复制    |    传递   |    比较   |

----------------------------------------------------------

数字            传值          传值         传值

布尔           传值          传值         传值

字符串       不可变     不可变       传值

对象           传址         传址         传址

-----------------------------------------------------------

 

转载于:https://www.cnblogs.com/329521/archive/2010/01/23/1654656.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值