声明和命名变量
遵循脚本语言的下列规则和原则来命名和声明变量。即使不要求在使用之前声明变量,但先声明变量的良好开发习惯将有助于减少错误。“声明”变量也就是告诉脚本引擎特定名称的变量已经存在,可以在脚本中使用该变量的参照。
VBScript
VBScript 不要求变量声明,但在使用之前先声明所有变量是一种良好的脚本编程习惯。要在 VBScript 中声明变量,可以使用“Dim”、“Public”或“Private”语句。例如:
可以在 .asp 文件中使用 VBScript“Option Explicit”语句,以便要求必须使用“Dim”、“Private”、“Public”和“ReDim”语句显式声明变量。“Option Explicit”语句必须位于任何 ASP 命令之后、任何 HTML 文本或脚本命令之前。此语句只影响使用 VBScript 编写的 ASP 命令;并不影响 JScript 命令。
Dim strUserName
Public lngAccountNumber
%>
.
.
.
有关这些命令的详细信息,请参阅位于 Microsoft Windows 脚本技术 Web 站点 http://msdn.microsoft.com/scripting/ 上的“VBScript 语言参考”。
JScript
虽然 JScript 通常不要求变量声明,但在使用之前先声明所有变量是一个良好的脚本编程习惯。要声明变量,可使用“var”语句。例如:
通常,只有在需要区分函数变量和函数外的“全局”变量时,才有必要在 JScript 中声明变量。在这种情况下,如果不区分这两个变量,JScript 将认为您专门引用的是全局变量。关于“var”语句的详细信息,请参阅“JScript 语言参考”。从位于 http://msdn.microsoft.com/scripting/ 的 Microsoft Windows 脚本技术 Web 站点上可以找到这些参考。
变量范围
变量“范围”或生存期确定哪些脚本命令可以访问变量。在过程中声明的变量具有“局部范围”;每次执行过程时创建和消除该变量。无法从过程外部访问该变量。在过程外部声明的变量具有“全局范围”;ASP 页中的任何脚本命令都可以访问和修改该变量值。
注意 将变量范围限制到过程中有利于提高性能。
如果声明变量,则局部变量和全局变量可以同名。修改其中一个变量的值,不会影响另一个变量。不过,如果不声明变量,则有可能在无意中修改全局变量的值。例如,在下例中虽然有两个变量 Y,但脚本命令返回值 1:
Option Explicit
Dim Y
Y = 1
SetLocalVariable
Response.Write Y
Sub SetLocalVariable
Dim Y
Y = 2
End Sub
%>
与此相反,在下例中因为没有显式声明变量,所以脚本命令返回值 2。当过程调用设置 Y 为 2 时,脚本引擎认为过程要修改全局变量:
Option Explicit
Dim Y = 1
SetLocalVariable
Response.Write Y
Sub SetLocalVariable
Y = 2
End Sub
%>
要避免此问题,有必要养成显式声明所有变量的习惯。这一点当使用“#include”语句在 .asp 文件中包含其他文件时尤其重要。被包含的脚本虽然在单独的文件中,但却当作是包含文件的一部分。除非声明变量,否则很容易忘记必须在主脚本和被包含脚本中使用不同的变量名。
提供变量的 Session 或 Application 作用域
全局变量只能在单个 .asp 文件内访问。要从单独页面外部访问变量,需提供变量的 Session 或 Application 作用域。Session 作用域变量对单个用户请求的 ASP 应用程序的所有页都可用。Application 作用域变量对任何用户请求的 ASP 应用程序的所有页都可用。Session 变量适用于存储单个用户的信息,如首选项、用户名或标识。应用程序变量适用于存储特定应用程序所有用户的信息,如应用程序需要的特定欢迎词或常规值。
ASP 提供了两种内建的对象,您可以在其中存储变量:“Session”对象和“Application”对象。
也可以用 Session 或 Application 作用域来创建对象实例。详细信息,请参阅设置对象作用域。
Session 作用域
要给变量提供 Session 作用域,可通过给对象中已命名条目赋值来将变量存储在 Session 对象中。例如,下面的命令将在“Session”对象中存储两个新变量:
Session("FirstName") = "Jeff"
Session("LastName") = "Smith"
%>
要从“Session”对象中检索信息,可使用输出命令 (
欢迎
可以在 Session 对象中存储用户首选项,然后通过访问这些首选项来确定哪些页返回给用户。例如,可以允许用户在应用程序首页中指定只查看纯文本内容,然后将此项选择应用于用户在该应用程序中访问的所有后续页。
strScreenResolution = Session("ScreenResolution")
If strScreenResolution = "Low" Then
%>
这是文字页面。
这是多媒体页面。
注意 如果在脚本中要多次参考 session 作用域变量,可以考虑如上例所示,将该变量赋给一个局部变量以便提高性能。
Application 作用域
要提供变量 Application 作用域,可通过给对象中已命名条目赋值来将变量存储在 Application 对象中。例如,下面的命令在“应用程序”对象中存储应用程序特定的欢迎词:
要从“Application”对象中检索信息,可使用 ASP 输出命令 (
同样地,如果脚本重复参考 Application 作用域变量,应将该变量赋给局部变量以便提高性能。
使用常量
“常量”是用来取代数值或字符串的名称。随 ASP 提供的部分基本组件,如 ActiveX 数据对象 (ADO),定义了可在脚本中使用的常量。组件可以在“组件类型库”中声明常量,组件类型库是一个包含 COM 组件支持的对象和类型的信息的文件。一旦在 .asp 文件中声明了类型库,就可以在同一 .asp 文件的所有脚本中使用已定义的常量。类似地,可以在 Global.asa 文件中声明类型库,以便在应用程序的所有 .asp 文件中使用已定义的常量。
要声明类型库,可以在 .asp 文件或 Global.asa 文件中使用 标签。例如,要声明 ADO 类型库,可使用下面的语句: