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

时间:2021-05-25

二者区别:
byval传递数值,实参和形参分处不同的内存单元,互不干扰!
byref传递地址,实参和形参占用相同的内存单元,形参变则实参变!!!!!!
通俗理解:
byval一去不复返
byref进去再出来,可能被更新!
在JavaScript中:
Boolean,Number,String型的参数是按值传递的==>相当于VBS中的ByVal;
而Object型的参数(包括JS对象,Array对象,Function对象等),是按引用传递==>相当于VBS中的ByRef
复制代码 代码如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://"/>
</head>
<body>
<scripttype="text/javascript">
<!--
functionNum(n){n=n*2;}//Number型的参数,按值传递的==>相当于VBS中的ByVal;
functionObj(){}
Obj.prototype.show=function(o){//JS对象,是按引用传递==>相当于VBS中的ByRef
o.toString=function(){
return("{id:"+this.id+",desc:"+this.desc+"}");
}
}
functionFunc(f){//Function对象,是按引用传递==>相当于VBS中的ByRef
f.show=function(o){
o.toString=function(){
return("{id:"+this.id+",desc:"+this.desc+",toString:function(){}}");
}
}
}

varN;
N=1;
alert(N);
Num(N);
alert(N);

varO;
O={
id:"001",
desc:"编号说明",
toString:function(){
returnnull;
}
};
varF=newObj();
varF2=newObj();
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>

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章