作家
登录

关于 byval 与 byref 的区别分析总结

作者: 来源:www.28hudong.com 2013-03-30 03:15:35 阅读 我要评论

二者区别: byval 传递数值,实参和形参分处不同的内存单元,互不干扰! byref 传递地址,实参和形参占用相同的内存单元,形参变则实参变!!!!!! 通俗理解: byval 一去不复返 byref 进去再出来,可能被更新!在JavaScript中: Boolean,Number,String型的参数是按值传递的 ==> 相当于VBS中的ByVal; 而Object型的参数(包括JS对象,Array对象,Function对象等),是按引用传递 ==> 相当于VBS中的ByRef 复制代码 代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> <head> <title> 函数传值测试 </title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="author" content="枫岩,CNLEI" /> <meta name="copyright" content="cnlei.y.l@gmail.com , http://www.cnlei.com" /> </head> <body> <script type="text/javascript"> <!-- function Num(n){n=n*2;}//Number型的参数,按值传递的 ==> 相当于VBS中的ByVal; function Obj(){} Obj.prototype.show = function(o){ //JS对象,是按引用传递 ==> 相当于VBS中的ByRef o.toString = function(){ return("{id:"+this.id+",desc:"+this.desc+"}"); } } function Func(f){ //Function对象,是按引用传递 ==> 相当于VBS中的ByRef f.show = function(o){ o.toString = function(){ return("{id:"+this.id+",desc:"+this.desc+",toString:function(){} }"); } } } var N; N=1; alert(N); Num(N); alert(N); var O; O = { id:"001", desc:"编号说明", toString: function (){ return null; } }; var F = new Obj(); var F2 = new Obj(); alert(O.id+"n"+O.toString()); F.show(O); alert(O.id+"n"+O.toString()); Func(F); F.show(O); alert(O.id+"n"+O.toString()); //--> </script> </body> </html>

  推荐阅读

  才发现的超链接js导致网页中GIF动画停止的解决方法

其实这个也是曾经让俺头疼的一个问题,当时怎么都找不到原因,后来才知道这是IE6浏览器的一个bug,不过后来也没有在注意过这个问题。 今日在蓝色经典发现有网友遇到了同样的问题,而且下面的回复者似乎也都>>>详细阅读


本文标题:关于 byval 与 byref 的区别分析总结

地址:http://www.17bianji.com/kaifa2/JS/30026.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)