Heim  >  Artikel  >  Web-Frontend  >  关于 byval 与 byref 的区别分析总结_javascript技巧

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

WBOY
WBOYOriginal
2016-05-16 19:08:361093Durchsuche

二者区别:
byval 传递数值,实参和形参分处不同的内存单元,互不干扰! 
byref 传递地址,实参和形参占用相同的内存单元,形参变则实参变!!!!!!
通俗理解:
byval 一去不复返 
byref 进去再出来,可能被更新!
在JavaScript中:
Boolean,Number,String型的参数是按值传递的 ==> 相当于VBS中的ByVal;
而Object型的参数(包括JS对象,Array对象,Function对象等),是按引用传递 ==> 相当于VBS中的ByRef

复制代码 代码如下:

nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
 
 函数传值测试  
 
 
 
 
 
<script> <BR><!-- <BR>function Num(n){n=n*2;}//Number型的参数,按值传递的 ==> 相当于VBS中的ByVal; <BR>function Obj(){} <BR>Obj.prototype.show = function(o){ //JS对象,是按引用传递 ==> 相当于VBS中的ByRef <BR> o.toString = function(){ <BR> return("{id:"+this.id+",desc:"+this.desc+"}"); <BR> } <BR>} <BR>function Func(f){ //Function对象,是按引用传递 ==> 相当于VBS中的ByRef <BR> f.show = function(o){ <BR> o.toString = function(){ <BR> return("{id:"+this.id+",desc:"+this.desc+",toString:function(){} }"); <BR> } <BR> } <BR>} <br><br>var N; <BR>N=1; <BR>alert(N); <BR>Num(N); <BR>alert(N); <br><br>var O; <BR>O = { <BR> id:"001", <BR> desc:"编号说明", <BR> toString: function (){ <BR> return null; <BR> } <BR>}; <BR>var F = new Obj(); <BR>var F2 = new Obj(); <BR>alert(O.id+"\n"+O.toString()); <BR>F.show(O); <BR>alert(O.id+"\n"+O.toString()); <BR>Func(F); <BR>F.show(O); <BR>alert(O.id+"\n"+O.toString()); <BR>//--> <BR></script> 
 
 
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn