|
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>
JavaScript技術:關于 byval 與 byref 的區別分析總結,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。