關(guān)于 byval 與 byref 的區(qū)別分析總結(jié)
更新時(shí)間:2007年10月08日 16:37:22 作者:
二者區(qū)別:
byval 傳遞數(shù)值,實(shí)參和形參分處不同的內(nèi)存單元,互不干擾!
byref 傳遞地址,實(shí)參和形參占用相同的內(nèi)存單元,形參變則實(shí)參變?。。。。?!
通俗理解:
byval 一去不復(fù)返
byref 進(jìn)去再出來(lái),可能被更新!
在JavaScript中:
Boolean,Number,String型的參數(shù)是按值傳遞的 ==> 相當(dāng)于VBS中的ByVal;
而Object型的參數(shù)(包括JS對(duì)象,Array對(duì)象,Function對(duì)象等),是按引用傳遞 ==> 相當(dāng)于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> 函數(shù)傳值測(cè)試 </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型的參數(shù),按值傳遞的 ==> 相當(dāng)于VBS中的ByVal;
function Obj(){}
Obj.prototype.show = function(o){ //JS對(duì)象,是按引用傳遞 ==> 相當(dāng)于VBS中的ByRef
o.toString = function(){
return("{id:"+this.id+",desc:"+this.desc+"}");
}
}
function Func(f){ //Function對(duì)象,是按引用傳遞 ==> 相當(dāng)于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:"編號(hào)說(shuō)明",
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>
byval 傳遞數(shù)值,實(shí)參和形參分處不同的內(nèi)存單元,互不干擾!
byref 傳遞地址,實(shí)參和形參占用相同的內(nèi)存單元,形參變則實(shí)參變?。。。。?!
通俗理解:
byval 一去不復(fù)返
byref 進(jìn)去再出來(lái),可能被更新!
在JavaScript中:
Boolean,Number,String型的參數(shù)是按值傳遞的 ==> 相當(dāng)于VBS中的ByVal;
而Object型的參數(shù)(包括JS對(duì)象,Array對(duì)象,Function對(duì)象等),是按引用傳遞 ==> 相當(dāng)于VBS中的ByRef
復(fù)制代碼 代碼如下:
<!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> 函數(shù)傳值測(cè)試 </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型的參數(shù),按值傳遞的 ==> 相當(dāng)于VBS中的ByVal;
function Obj(){}
Obj.prototype.show = function(o){ //JS對(duì)象,是按引用傳遞 ==> 相當(dāng)于VBS中的ByRef
o.toString = function(){
return("{id:"+this.id+",desc:"+this.desc+"}");
}
}
function Func(f){ //Function對(duì)象,是按引用傳遞 ==> 相當(dāng)于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:"編號(hào)說(shuō)明",
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>
相關(guān)文章
深入理解JavaScript中的尾調(diào)用(Tail Call)
尾調(diào)用(Tail Call)是函數(shù)式編程的一個(gè)重要概念,下面這篇文章主要給大家深入的介紹了關(guān)于JavaScript中尾調(diào)用的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-02-02laydate只顯示時(shí)分 不顯示秒的功能實(shí)現(xiàn)方法
今天小編就為大家分享一篇laydate只顯示時(shí)分 不顯示秒的功能實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09JavaScript中call、apply、bind實(shí)現(xiàn)原理詳解
其實(shí)在很多文章都會(huì)寫(xiě)call,apply,bind,但個(gè)人覺(jué)著如果不弄懂原理,是很難理解透的,所以這篇文章主要介紹了JavaScript中call、apply、bind實(shí)現(xiàn)原理的相關(guān)資料,需要的朋友可以參考下2021-06-06在 javascript 中如何快速獲取數(shù)組指定位置的元素
這篇文章主要介紹了在 javascript 中快速獲取數(shù)組指定位置的元素,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04微信小程序開(kāi)發(fā)指南之字體樣式設(shè)置
在小程序開(kāi)發(fā)中 經(jīng)常需要我們自定義字體樣式,下面這篇文章主要給大家介紹了關(guān)于微信小程序開(kāi)發(fā)指南之字體樣式設(shè)置的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03基于JS實(shí)現(xiàn)PHP的sprintf函數(shù)實(shí)例
這篇文章主要介紹了基于JS實(shí)現(xiàn)PHP的sprintf函數(shù)的方法,可實(shí)現(xiàn)JavaScript模擬PHPsprintf函數(shù)的輸出功能,涉及JavaScript字符串操作的相關(guān)技巧,需要的朋友可以參考下2015-11-11