先给出一个小例子,大家运行看效果!
以下是代码片段: <% 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传值没有改变全局变量的值。飞飞.Asp技术乐园 2、ByRef传值改变了全局变量的值。 3、系统默认的是ByRef传值。
至于应该在什么时候使用吗?这就要看自己的实际情况了!
ByVal 传送参数内存的一个拷贝给被调用者。也就是说,栈中压入的直接就是所传的值。飞飞Asp技~术乐园 ByRef 传送参数内存的实际地址给被调用者。也就是说,栈中压入的是实际内容的地址。被调用者可以直接更改该地址中的内容。 ByVal是传递值 源数据不会被修改 你可以把这个值当作自己的局部变量来使用 ByRef是传递地址 , 源数据可能被修改 你对这个变量的操作将对你传入的那个变量产生影响,就像指针的感觉
|