日期:2010-01-05 浏览次数:20891 次
<%
dim a
a = 10
function aa()
dim b
b = 5
response.write(a)'这里输出的是10,函数外部定义的变量可以称之为全局变量,在任何位置都有效,包含FUNCTION内部、SUB内部,CLASS内部
a = 5 '由于a是在aa外部定义的,所以这里对A的改动会影响到全局a的值
end function
call aa()
response.write(a) '这里输出的是5,因为a在AA函数内被改动了。
response.write(b) '这里输出的是空,因为b是在函数aa内部定义的,所以b只在aa内部有效
%>
再看一例
<%
dim a
a = 10
function aa()
dim a '注意这里比上面的函数中加了一个dim a,在aa内部声明的变量只在aa内部有效,此函数中的a与函数外面的a没有任何关系,因此他不会影响到函数外a的值
a = 5
end function
call aa
response.write(a)'这里输出为10,因为在函数内部声明的变量只在内部有效
%>
第三例
<%
dim a
a = 10
'注意这里的参数使用了byval,不加byval默认情况下ASP将使用byref的方式传值,byval简单可以理解为复制参数的一个副本,因此a在aa中的变化实际上只是a的一个副本的变化,不会影响到外部a的值,因此在后面的输出a仍然为10
function aa(byval a)
a = 5
end function
call aa(a)
response.Write(a)
%>
第四例
<%
dim a
a = 10
'这里传值的方式改成了byref,实际上加不加byref效果都不一样,VBSCRIPT中的函数及过程默认的传值方式都是byref
'byref意为传送该参数的实际内存地址,因此在函数内修改a相当于修改了函数外部a的值,所以下面将会输出5
function aa(byref a)
a = 5
end function
call aa(a)
response.Write(a)'这里输出的是5,因为在函数aa中a的值被改变了
%>