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

在服务器端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页表

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

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

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

数字            传值          传值         传值

布尔           传值          传值         传值

字符串       不可变     不可变       传值

对象           传址         传址         传址

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

我的qq:674096197,欢迎一起探讨asp javascript 不在线请弹屏一下!
原文地址:https://www.cnblogs.com/329521/p/1654656.html