程序阶层变量
所谓程序阶层变量,就是在程序内宣告的变量。以前我们在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>