变量是计算机内存中已命名的内存位置,该位置可存储脚本运行时能更改的信息。在程序中,常用变量来临时存储数据。
1.声明变量
声明变量有两种方式,即显式声明和隐式声明。
显式声明要用到Dim语句。例如:
以上代码声明了三个变量,即strUserName,strServerName 和dtmTime。
隐式声明是指脚本中第一次使用变量时,就自动创建该变量。例如:
以上代码中,VBScript 用dimToday 自动创建一个变量。虽然隐式声明很方便,但如果把变量名拼错了的话,就会导致难以查找的错误。例如:
以上代码看起来好像没有问题,结果应该和前面的代码一样。但由于在ASP 输出命令中将dtmToday 写错了,因此无法显示出当前的日期和时间。这是因为当VBScript 遇到新的名字时,无法确定到底是隐式声明了一个新变量,还是仅仅把现有变量名写错了,于是只好用新名字再创建一个新变量。
为了避免隐式声明时写错变量名引起的问题,VBScript提供了Option Explicit语句来强制显式声明。如果在程序中使用该语句,则所有变量必须先声明,然后才能使用,否则会出错。Option Explicit语句必须位于ASP处理命令之后、任何HTML文本或脚本命令之前。
例5-6:
注意:Option Explicit语句只影响用VBScript编写的ASP命令,并不影响JScript命令。
2.变量命名约定(www.xing528.com)
每个变量都有一个由程序员给出的名字。在VBScript中,变量命名必须遵循这样的规则:①名字必须以字母开头;②名字中不能含有句号;③名字不能超过255 个字符;④名字不能和关键字同名;⑤名字在被声明的作用域内必须惟一。
VBScript 不区分大小写。例如,将一个变量命名为myCounter 和将其命名为mY-Counter是一样的。另外,给变量命名时,要含义清楚,便于记忆。建议读者尽量按表5-3所示的前缀来命名变量,以便通过变量名便可获知该变量的子类型。
表5-3 子类型前缀
注意:以上前缀只是一种约定,它可以提高可读性,并能减少错误,但不是语言本身的规定,编程时可以采纳,也可以不采纳。
3.变量的作用域
变量被声明后不是在任何地方都可以被使用,每个变量都有它的作用域,作用域是指程序中哪些代码能引用变量。过程内部声明的变量称为过程级变量或局部变量,这样的变量只有在声明它们的过程中才能使用,即无法在过程外部访问;过程外部声明的变量称为脚本级变量或全局变量,即在同一个.asp 文件中的任何脚本命令均可访问和修改该变量的值。过程级和脚本级变量可以同名,修改其中一个变量的值,不会影响另一个。
例5-7:
但是,如果不声明变量,则有可能在无意中修改脚本级变量的值。例如,在下面的例子中,由于没有在过程中声明变量,因此当过程调用设置变量intX 为2 时,脚本引擎认为过程要修改的是脚本级变量:
例5-8:
为了避免这样的问题,有必要养成显式声明所有变量的习惯。这一点当用#include 命令在.asp 文件中包含其他文件时尤其重要,因为被包含的脚本虽然在单独的文件中,但却当作是包含文件的一部分。除非声明变量,否则很容易忘记必须在主脚本和被包含脚本中使用不同的变量名。
注意:脚本级变量只能在单个.asp 文件内访问。如果要从文件的外部访问变量,则必须提供变量的Session或Application作用域。Session 作用域变量对单个用户请求的ASP应用程序的所有页均可用。Application作用域变量对任何用户请求的ASP应用程序的所有页均可用。
Session 变量适用于存储单个用户的信息,如用户名或标识;Application 变量适用于存储特定应用程序所有用户的信息,如应用程序需要的特定欢迎词或常规值。ASP 提供的Session对象用于存储Session 作用域变量,而Application 对象用于存储Application 作用域变量。与Session或Application对象的有关内容,请参见后面的章节。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。