日期:2010-01-05  浏览次数:20874 次

<%
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的值被改变了
%>