byvalとbyrefの違いについての分析まとめ
2023 ワード
二つの違い:
byval 転送値は、実際の参照とイメージの異なるメモリユニット、相互干渉しません!
byref 転送アドレスは、実参照と形参が同じメモリユニットを占有しています.
分かりやすい:
byval 行ったきり帰らない
byref 中に入ってまた出ます.更新されるかもしれません.
JavaScriptでは、
Boolean,Number,String型のパラメータは値によって伝達されます. ==> VBSの中のByValに相当します.
Object型のパラメータ(JSオブジェクト、Arayオブジェクト、Functオブジェクトなどを含む)は、参照によって伝達されます. ==> VBSに相当するByRef
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>