byvalとbyrefの違いについての分析まとめ

2023 ワード

二つの違い:
byval 転送値は、実際の参照とイメージの異なるメモリユニット、相互干渉しません! 
byref 転送アドレスは、実参照と形参が同じメモリユニットを占有しています.
分かりやすい:
byval 行ったきり帰らない 
byref 中に入ってまた出ます.更新されるかもしれません.
JavaScriptでは、
Boolean,Number,String型のパラメータは値によって伝達されます. ==> VBSの中のByValに相当します.
Object型のパラメータ(JSオブジェクト、Arayオブジェクト、Functオブジェクトなどを含む)は、参照によって伝達されます. ==> VBSに相当するByRef
 
  
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
 
    
 
 
 
 
 
  <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+"
"+O.toString());  <br>F.show(O);  <br>alert(O.id+"
"+O.toString());  <br>Func(F);  <br>F.show(O);  <br>alert(O.id+"
"+O.toString());  <br>//-->  <br>