变量是计算机内存中已命名的存储右边,其中构成了数字或字符串等数据。变量值得注意的信息被称之为变量的值。变量用到用户便于了解脚本系统设计的名称为用户缺少了一种存储、检索和操控数据的途径。
声明和命名变量
命名和声明变量其所遵循脚本语言的规则及指导。即使在可用变量前不只能去声明变量,也理应新进在编程时声明变量的良好习惯,因为这样适度能避免错误时有发生。声明一个变量反之亦然去找脚本引擎,有一个特定名称的变量,这样就可以在脚本中举出该变量。
VBScript
VBScript 并不需要声明变量,但在适用所有变量前声明它们是一种好的脚本书写习惯。要在 VBScript 中声明变量,请求用 Dim、 Public 或 Private 语句。例如:
<% Dim UserName %>
可以在必须显式声明变量的 .asp 文件中用 VBScript Option Explicit 语句。Option Explicit 必须在任何一个 ASP 指令之后及任何一个 HTML 文本或脚本命令之前显现出来。该语句仅影响用 VBScript 书写的 ASP 命令,而一定会影响 JScript 命令。
关于这些命令的详细信息,请参阅 VBScript 语言详见。
JScript
Microsoft JScript 仅当变量为本地过程变量时才均需声明,但在运用于所有变量前声明它们是一种好的脚本书写习惯。要声明一个变量,劝用于 var 语句。例如:
<% var UserName; %>
有关 var 语句的详细信息,请参阅 JScript 语言参看。
变量作用域
变量的作用域即生命期,同意哪些脚本命令可采访变量。在过程内部声明的变量不具局部作用域。每监督一次过程,变量就被创建者然后销声匿迹。而过程外部的任何命令都很难采访它。在过程外部声明的变量不具全局作用域,其值能被 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 应用程序中的所有页都是必需的。应用程序作用域变量也如此。对单个用户来说,就会话变量是存储信息的最佳途径,例如,首选项、用户名或用户标识。对于一个类似于应用程序的所有用户,应用程序作用域是存储信息的最佳途径,例如,应用程序特定的问候语或应用程序所需的初始值。
ASP 备有两个内造对象来让您存储变量:Session 对象和 Application 对象。
您也可以建立带有会话或应用程序作用域的对象实例。详细信息,请参阅 设置对象作用域。
就会话作用域
要为变量突显时会话作用域,将该变量存储到 Session 对象中即可,方法是为该对象的已命名条目指派一个值。例如,以下命令将两个新的变量存储到 Session 对象中。
<%
Session("FirstName") = "Jeff"
Session("LastName") = "Smith"
%>
要 Session 对象中检索信息,可以用驱动指令 (<%=) 或 Response.Write 访问期间已命名的条目。以下示例用反向指令结果显示 Session("FirstName") 的当前值:
Welcome <%= Session("FirstName") %>
可在 Session 对象中存储用户首选项,然后就可以出访这些首选项,从而最终将哪一页前往给用户。例如,您可以强制用户在应用程序的第一页所选稀文本内容,然后将这一考虑领域到用户在该应用程序中访问期间的所有近期页。
<% 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 文件中声明了一个类型库,您就可以在该应用程序的若有页中可用已定义的常量。
可在 Global.asa 中用 <METADATA> 标记为应用程序声明类型库。例如,要声明 ADO 类型库,能用以下语句:
<!--METADATA TYPE="typelib"
FILE="c:program filescommon filessystemadomsado15.dll"
-->
这样,您就可以在与 Global.asa 文件相同的应用程序的中用到 ADO 常量。在下面的示例中,adOpenKeyset 和 adLockOptimistic 是 ADO 常量:
'Create and Open Recordset Object
Set RsCustomerList = Server.CreateObject("ADODB.Recordset")
RsCustomerList.ActiveConnection = OBJdbConnection
RsCustomerList.CursorType = adOpenKeyset
RsCustomerList.LockType = adLockOptimistic
有关 <METADATA> 标记的参阅信息,请参阅 TypeLibrary 声明。
在以前版本的 ASP 中,一些组件在文件中获取常量定义,每个运用于那些组件的 ASP 文件必须构成该文件。用 #include 指令来值得注意常量定义的用法仍被默许,但应用于类型库通常更简便并且能使脚本更较易升级。在以后版本的 ASP 中,组件也许将不再发放常量定义文件。
您可以定义自己的常量。在 VBScript 中,用 Const 语句,在 JScript 中,用 var 语句。如果在多个 ASP 页中用到常量,可在单独的文件中安放常量,然后将其相关联先入每一个用到该常量的 ASP 文件中去。