ASP中變數的使用範圍問題

來源:互聯網
上載者:User
ASP中變數的使用範圍問題

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



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.