程序階層變量
所謂程序階層變量,就是在程序內宣告的變量。以前我們在Sub 或是Function 中宣告的變量,都是程序階層的變量;也就是區域變量。程序階層變量在程序執行時被宣告產生,而程序執行完畢后也同時被毀滅;也就是說其它的事件程序無法使用這個變量,因為它已經被毀滅了。下列范例宣告了一個程序階層變量,并嘗試在另外一個程序中將其它程序階層的變量顯示出來:
<Html>
<Script Language="VB" Runat="Server">
Sub Page_Init(Sender As Object, e As EventArgs)
Dim strTest As String '宣告程序階層的變量
strTest = "這是程序階層的變量"
End Sub
Sub Page_Load(Sender As Object, e As EventArgs)
Response.Write(strTest) '這里沒有宣告strTest 變量, 就是Object 型態
End Sub
</Script>
</Html>
上述范例變量strTest 在Page_Init 事件中被宣告,并指定其內容。不過由于該變量是屬于程序階層的變量,所以在Page_Init 事件程序執行完畢后即被消滅。因為在Page_Load 事件程序中要顯示變量strTest 時,由于strTest 早已被消滅,所以這里的strTest 變量也是Page_Load 程序階層的變量,對于沒有宣告型態的變量就是Object 型態,無法顯示任何的訊息。
網頁階層變數
而網頁階層的變量則是網頁在加載執行時,會先讀取網頁階層宣告區中的宣告,所有在網頁階層宣告區中宣告的變量都視為網頁階層變量; 網頁階層變量在網頁執行時先被宣告產生,在網頁執行完畢后才會被毀滅。所謂網頁階層的宣告區,就是在程序外面,<Script> </Script> 之內的地方。為了程序的可讀性,我們習慣在<Script> </Script> 標注中前面區域進行網頁階層的變量宣告。下列范例宣告了一個網頁階層變量strMSG:
<Script Language="VB" Runat="Server">
Dim strMsg As String '網頁階層的宣告區
Sub Page_Load(Sender As Object, e As EventArgs)
...
End Sub
</Script>
網頁階層變量以及程序階層變量的生命周期,如下插圖所示:
我們知道網頁開始執行時會先觸發Page_Init 事件,接著再觸發Page_Load 事件,所以我們利用這兩個事件來作一個簡單的試驗。首先我們在網頁階層的宣告區中宣告了一個變量strMsg,另外在Page_Init 事件程序中宣告了一個strTest 變量;所以strMsg 為網頁階層變量,而strTest為則為程序階層變量,如下程序所示:
<Html>
<ASP:Label Id="Label1" Runat="Server"/>
<ASP:Label Id="Label2" Runat="Server"/>
<Script Language="VB" Runat="Server">
Dim strMsg As String '宣告網頁階層的變量
Sub Page_Init(Sender As Object, e As EventArgs)
Dim strTest As String '宣告程序階層的變量
strMsg = "這是窗體階層的變量"
strTest = "這是程序階層的變量"
End Sub
Sub Page_Load(Sender As Object, e As EventArgs)
Label1.Text=strMsg
Label2.Text=strTest '這里沒有宣告strTest 變量, 就是Object 型態
End Sub
</Script>
</Html>