VBScript VBScript 并不需要聲明變量,但在使用所有變量前聲明它們是一種好的腳本書寫習慣。要在 VBScript 中聲明變量,請用 Dim、 Public 或 PRivate 語句。例如:
<% Dim UserName %> 可以在需要顯式聲明變量的 .asp 文件中用 VBScript Option Explicit 語句。Option Explicit 必須在任何一個 ASP 指令之后及任何一個 HTML 文本或腳本命令之前出現。該語句僅影響用 VBScript 書寫的 ASP 命令,而不會影響 JScript 命令。
JScript Microsoft JScript 僅當變量為本地過程變量時才需聲明,但在使用所有變量前聲明它們是一種好的腳本書寫習慣。要聲明一個變量,請使用 var 語句。例如:
<% var UserName; %> 變量作用域 變量的作用域即生命期,決定哪些腳本命令可訪問變量。在過程內部聲明的變量具有局部作用域。每執行一次過程,變量就被創建然后消亡。而過程外部的任何命令都不能訪問它。在過程外部聲明的變量具有全局作用域,其值能被 ASP 頁上的任何腳本命令訪問和修改。
聲明變量時,局部變量和全局變量可以有相同的名稱。而改變其中一個的值并不會改變另一個的值。如果沒有聲明變量,則可能不小心會改變一個全局變量的值。例如,以下腳本命令返回值 1,雖然有兩個名為 Y 變量:
<% Dim Y Y = 1 Call SetLocalVariable Response.Write Y
Sub SetLocalVariable Dim Y Y = 2 End Sub %> 由于變量沒有顯式聲明,以下的腳本命令將返回 2。當過程調用將 Y 設置為 2 時,腳本引擎認為該過程是要修改全局變量:
<% Y = 1 Call SetLocalVariable Response.Write Y
Sub SetLocalVariable Y = 2 End Sub %> 養成顯式聲明所有變量的編程習慣可以避免許多問題。尤其在當您用 #include 語句將文件包含進 ASP 主頁時,就顯得更為重要。一個獨立文件中被包含的腳本是被當作整個包含它的文件的一部分來處理的。用不同的名稱來命名主腳本和被包含腳本中用到的變量,這容易被遺忘,除非聲明變量。
為變量賦予會話或應用程序作用域 全局變量僅在單個 ASP 頁中可用,要使它在單個 ASP 頁之外可用,就必須為變量賦予會話或應用程序作用域。會話作用域變量對一個用戶所請求的 ASP 應用程序中的所有頁都是可用的。應用程序作用域變量也如此。對單個用戶來說,會話變量是存儲信息的最佳途徑,例如,首選項、用戶名或用戶標識。對于一個特殊應用程序的所有用戶,應用程序作用域是存儲信息的最佳途徑,例如,應用程序特定的問候語或應用程序所需的初始值。
<% If Session("ScreenResolution") = "Low" Then %> This is the text version of the page. <% Else %> This is the multimedia version of the page. <% End If %> 應用程序作用域 要為變量賦予應用程序作用域,將該變量存儲到 Application 對象中即可,方法是為該對象的已命名條目指派一個值。例如,以下命令將一個應用程序特定的問候語存儲到Application 對象中:
<% Application("Greeting") = "Welcome to Exploration Air" %> 要從 Application 對象中檢索信息,可以使用 ASP 輸出指令 (<%=) 或 Response.Write 從該應用程序的任意后續頁中訪問已命名條目。以下示例用輸出指令顯示 Application("Greeting") 的值:
<%= Application("Greeting") %> 使用常量 常量是用來代替一個數或字符串的名稱。一些隨 ASP 提供的基本組件,例如 ActiveX Data Objects (ADO),定義了您在腳本中可以使用的常量。組件可在一個組件類型庫中聲明常量,組件類型庫是一個包含 ActiveX 組件所支持的對象和類型的信息的文件。一旦在 Global.asa 文件中聲明了一個類型庫,您就可以在該應用程序的任意頁中使用已定義的常量。
'Create and Open Recordset Object Set RsCustomerList = Server.CreateObject("ADODB.Recordset") RsCustomerList.ActiveConnection = OBJdbConnection RsCustomerList.CursorType = adOpenKeyset RsCustomerList.LockType = adLockOptimistic 在以前版本的 ASP 中,一些組件在文件中提供常量定義,每個使用那些組件的 ASP 文件必須包含該文件。用 #include 指令來包含常量定義的用法仍被支持,但使用類型庫通常更方便并且能使腳本更易于升級。在以后版本的 ASP 中,組件可能將不再提供常量定義文件。
您可以定義自己的常量。在 VBScript 中,用 Const 語句,在 JScript 中,用 var 語句。如果在多個 ASP 頁中使用常量,可在獨立的文件中放置常量,然后將其包含進每一個使用該常量的 ASP 文件中去。