首页 | 免费域名 | 个人服务器 | 一流信息监控拦截系统 | 虚拟主机知识库 | ASP 空间 | ASP技术大全 | 下载中心 | 客户服务中心
  7i24 > ASP技术大全 > ASP快速入门(微软版) >
    7i24 .Com  
  使用变量和常量

7i24.Com不停为您服务
使用变量和常量
“变量”是计算机内存中已命名的存储位置,它包含数据,如数值或文本字符串。变量中包含的数据称为变量的“值”。变量使用有助于理解脚本功能的名称来存储、检索和管理值。

声明和命名变量
遵循脚本语言的下列规则和原则来命名和声明变量。即使不要求在使用之前声明变量,但先声明变量的良好开发习惯将有助于减少错误。“声明”变量也就是告诉脚本引擎特定名称的变量已经存在,可以在脚本中使用该变量的参照。

VBScript
VBScript 不要求变量声明,但在使用之前先声明所有变量是一种良好的脚本编程习惯。要在 VBScript 中声明变量,可以使用“Dim”、“Public”或“Private”语句。例如:

<% Dim UserName %>
可以在 .asp 文件中使用 VBScript“Option Explicit”语句,以便要求必须使用“Dim”、“Private”、“Public”和“ReDim”语句显式声明变量。“Option Explicit”语句必须位于任何 ASP 命令之后、任何 HTML 文本或脚本命令之前。此语句只影响使用 VBScript 编写的 ASP 命令;并不影响 JScript 命令。

<% Option Explicit %>
<HTML>
<%
Dim strUserName
Public lngAccountNumber
%>
.
.
.

有关这些命令的详细信息,请参阅位于 Microsoft Windows 脚本技术 Web 站点 http://msdn.microsoft.com/scripting/ 上的“VBScript 语言参考”。

JScript
虽然 JScript 通常不要求变量声明,但在使用之前先声明所有变量是一个良好的脚本编程习惯。要声明变量,可使用“var”语句。例如:

<% var UserName %>
通常,只有在需要区分函数变量和函数外的“全局”变量时,才有必要在 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”对象中检索信息,可使用输出命令 (<%=) 或 Response.Write访问已命名的条目。下面的示例使用输出命令显示 Session("FirstName") 的当前值:

欢迎<%= Session("FirstName") %>
可以在 Session 对象中存储用户首选项,然后通过访问这些首选项来确定哪些页返回给用户。例如,可以允许用户在应用程序首页中指定只查看纯文本内容,然后将此项选择应用于用户在该应用程序中访问的所有后续页。

<%
strScreenResolution = Session("ScreenResolution")
If strScreenResolution = "Low" Then
%>
这是文字页面。
<% Else %>
这是多媒体页面。
<% End If %>
注意 如果在脚本中要多次参考 session 作用域变量,可以考虑如上例所示,将该变量赋给一个局部变量以便提高性能。

Application 作用域
要提供变量 Application 作用域,可通过给对象中已命名条目赋值来将变量存储在 Application 对象中。例如,下面的命令在“应用程序”对象中存储应用程序特定的欢迎词:

<% Application("Greeting") = "销售部欢迎您!" %>
要从“Application”对象中检索信息,可使用 ASP 输出命令 (<%=) 或 Response.Write 来从应用程序中的任何后续页访问已命名的条目。下面的命令使用输出命令来显示 Application("Greeting") 的值:

<%= Application("Greeting") %>
同样地,如果脚本重复参考 Application 作用域变量,应将该变量赋给局部变量以便提高性能。

使用常量
“常量”是用来取代数值或字符串的名称。随 ASP 提供的部分基本组件,如 ActiveX 数据对象 (ADO),定义了可在脚本中使用的常量。组件可以在“组件类型库”中声明常量,组件类型库是一个包含 COM 组件支持的对象和类型的信息的文件。一旦在 .asp 文件中声明了类型库,就可以在同一 .asp 文件的所有脚本中使用已定义的常量。类似地,可以在 Global.asa 文件中声明类型库,以便在应用程序的所有 .asp 文件中使用已定义的常量。

要声明类型库,可以在 .asp 文件或 Global.asa 文件中使用 <METADATA> 标签。例如,要声明 ADO 类型库,可使用下面的语句:

<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
或者,如果不参考类型库的通用唯一标识符 (UUID),也可通过文件路径参考类型库:

<!-- METADATA TYPE="typelib" FILE="c:\program files\common files\system\ado\msado15.dll"-->
然后即可在 .asp 文件中使用 ADO 常量,该文件声明了类型库或者驻留在包含 Global.asa 文件(声明了 ADO 类型库)的应用程序中。在下面的例子中,adOpenKeyset 和 adLockOptimistic 是 ADO 常量:

<%
'创建和打开 Recordset 对象。
Set rstCustomerList = Server.CreateObject("ADODB.Recordset")

rstCustomerList.ActiveConnection = cnnPubs
rstCustomerList.CursorType = adOpenKeyset
rstCustomerList.LockType = adLockOptimistic
%>
下表列出了常用的类型库和 UUID:

类型库 UUID
Microsoft ActiveX Data Objects 2.5 Library {00000205-0000-0010-8000-00AA006D2EA4}
Microsoft CDO 1.2 Library for Windows 2000 Server {0E064ADD-9D99-11D0-ABE5-00AA0064D470}
MSWC Advertisement Rotator Object Library {090ACFA1-1580-11D1-8AC0-00C0F00910F9}
MSWC IIS Log Object Library {B758F2F9-A3D6-11D1-8B9C-080009DCC2FA}

关于 <METADATA> 标签的参考信息,请参阅 TypeLibrary 声明。

在以前版本的 ASP 中,部分组件提供在文件中常量定义,这些文件必须包含在使用这些常量的所有 ASP 文件中。虽然仍可以通过 #include 命令包含常量定义,但使用类型库更方便,也更容易升级脚本。在未来的 ASP 版本中,组件可能不提供常量定义文件。

注意 使用 <METADATA> 标签(而不是“#include”命令)可以提高 Web 应用程序的性能。

可以定义自己的常量。在 VBScript 中,使用“Const”语句。在 JScript 中,可以使用“var”语句将常量值赋给变量。如果要在多个 .asp 文件中使用常量,则需要将定义放在单独文件中,并在所有使用该常量的 .asp 文件中包含这些定义。


  2002年1月3日  阅读 3037 次  发送此页给朋友  来源:    版权争议  删除

相关文章:   近期热点:

上一篇: 使用脚本语言
下一篇: 与客户端脚本交互操作
返回上一层...
搜索:

(C)2004-2022 7i24.Com 保留所有权利