在服务器端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页表
----------------------------------------------------------
类型 | 复制 | 传递 | 比较 |
----------------------------------------------------------
数字 传值 传值 传值
布尔 传值 传值 传值
字符串 不可变 不可变 传值
对象 传址 传址 传址
-----------------------------------------------------------