vbs(asp) ByVal ByRef函数调用使用说明
作者 佚名
来源 ASP编程
浏览
发布时间 2013-07-09
1、ByVal传值:一种将参数值而不是将地址传递给过程的方式,这就使过程访问到变量的复本。结果,过程不可改变变量的真正值。 复制代码 代码如下: <SCRIPT LANGUAGE="vbScript"> dim a a=0 document.write "a=0" document.write "<br/>sub change(byref ar)<br/>" change a document.write a a=0 document.write "<br/>sub change2(ByVal ar)<br/>" change2 a document.write a a=0 document.write "<br/>sub change3( ar)<br/>" change3 a document.write a a=0 document.write "<br/>function change4(byref ar)<br/>" change4 a document.write a a=0 document.write "<br/>function change5(ByVal ar)<br/>" change5 a document.write a a=0 document.write "<br/>function change6( ar)<br/>" change6 a document.write a a=0 sub change(byref ar) ar=111 end sub sub change2(ByVal ar) ar=222 end sub sub change3( ar) ar=333 end sub function change4(byref ar) ar=444 end function function change5(ByVal ar) ar=555 end function function change6( ar) ar=666 end function </SCRIPT> ======================= 结果: a=0 sub change(byref ar) 111 sub change2(ByVal ar) 0 sub change3( ar) 333 function change4(byref ar) 444 function change5(ByVal ar) 0 function change6( ar) 666 说明vbs默认是byRef,这点和VB一样, 按地址。 再给出一个小例子,大家运行看效果! 复制代码 代码如下: <% Dim i,j,p,m i = 10 j = 12 Response.Write i&"******"&j&"<br>" Call Fun2 (i,j) Response.Write i&"******"&j&"<br>" i = 10 j = 12 Call Fun (i,j) Response.Write i&"*******"&j&"<br>" Function Fun2 (a,b) a = 5 b = 6 Fun2 = 0 End Function Function Fun (ByVal a,ByRef b) a = 5 b = 6 Fun = 0 End Function %> 通过上面的例子你可以发现: 1、ByVal传值没有改变全局变量的值。 2、ByRef传值改变了全局变量的值。 3、系统默认的是ByRef传值。 至于应该在什么时候使用吗?这就要看自己的实际情况了! ByVal 传送参数内存的一个拷贝给被调用者。也就是说,栈中压入的直接就是所传的值。 ByRef 传送参数内存的实际地址给被调用者。也就是说,栈中压入的是实际内容的地址。被调用者可以直接更改该地址中的内容。 ByVal是传递值 源数据不会被修改 你可以把这个值当作自己的局部变量来使用 ByRef是传递地址 , 源数据可能被修改 你对这个变量的操作将对你传入的那个变量产生影响,就像指针的感觉 vb6的说明 啥也不说了,接题: 复制代码 代码如下: Function Test(a) a = a + 1 End Function c = 1 ''------------------------------------ ''问题: '' 请说出分别调用下面四种方法的结果? ''------------------------------------ ''方法一 Test c ''方法二 ''Test (c) ''方法三 ''Test (c+1) ''方法四 ''Call Test(c) msgbox c 正确答案:分别为:2 , 1 , 1 , 2 你全答对了没?全答对了你可以直接Return了,没答对的话继续往下看。 追溯 几乎所有编程语言的函数传参都有传值和传引用之分,我们的VB老兄也不例外,而且,她选择了传引用作为其默认方式,甚者,她对所有变量类型不加挑剔,全部默认采用传引用的方式,包括整型变量(int)。这也是华山论剑败北的最根本原因。 你可以在参数前使用ByVal(传 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于vbs(asp) ByVal ByRef函数调用使用说明的所有评论