变量是一种使用方便的占位符,用于引用计算机的内存地址,该地址可以存储脚本运行时可更改的数据。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。在VBScript中只有一种数据类型,即Variant,因此所有变量的数据类型都是Variant
1.声明变量
在VBScript中,通常使用Dim语句显式声明变量并分配存储空间,声明变量的语法格式如下:
Dim变量1,变量2,⋯
例如,下面的两个语句分别声明了1个变量和4个变量:
Dim User Name
Dim Birth Date,Age,Sex,Week Wage
此外,也可以通过直接在脚本中使用变量名这种方式隐式声明变量。但这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果。若要强制显式声明所有变量,可以在脚本程序的开头处使用下面的语句:
Option Explicit
2.给变量赋值在VBScript中,可以通过赋值语句指定变量的值,此时变量位于等号的左边,要赋的值位于等号的右边,该值可以是任何数值、字符串、常数或表达式。
例如
UserName=″王丽″
BirthDate=#1980-3-12#
WeekWage=400
3.变量命名规则
每一个变量都必须用一个标识符来作为其名称。变量命名必须遵循VBScript的标准命名规则。变量的命名规则为:
(1)第一个字符必须是字母;
(2)不能包含嵌入的句点(.);
(3)长度不能超过255个字符;
(4)在被声明的作用域内必须唯一;
(5)不能与VBScript的关键字相同。
4.变量的作用域与存活期
变量的作用域由声明它的位置决定。如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为过程级变量。如果在过程之外声明变量,则该变量可以被脚本中所有过程所识别,称为脚本级变量,具有脚本级作用域。
变量存在的时间称为存活期。脚本级变量的存活期从被声明的一刻起,直到脚本运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。在不同过程中可以使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。
5.标量变量和数组变量
多数情况下,只需为声明的变量赋一个值,只包含一个值的变量被称为标量变量。有时候为了编程的方便,将多个相关值赋给一个变量,因此可以创建包含一系列值的变量,称为数组变量。
数组变量必须先声明再使用。数组变量的声明方式与标量变量一样,唯一的区别是声明数组变量时变量名后面带有括号()。例如声明一个具有10个元素的数组可使用下面的方式:
Dim A(9)
在VBScript中,数组下标都是基于0的,所以尽管上例括号中的值是9,这个数组实际上包含下标从0~9共10个元素。在下标基于0的数组中,数组的元素数目等于括号中显示的数目加1。这种数组被称为固定大小的数组。
在VBScript中数组并不仅限于一维。数组的维数最大可以为60。声明多维数组时,使用逗号分隔括号中每个表示数组大小的数字。例如使用下面的语句声明一个二维数组。
Dim B(4,5)
声明二维数组时,括号中的第一个数字表示行的最大索引值,第二个数字表示列的最大索引值。B(4,5)声明了一个5行6列的二维数组。
创建一个数组,使用数组名和索引来引用数组的每个元素,例如下面的赋值语句将数据赋给数组元素,或者将数组元素的值赋给变量:
A(0)=128
A(1)=456
A(2)=973
SomeVariable=A(8)
在VBScript中也可以声明动态数组,动态数组就是在运行脚本时大小发生变化的数组。对动态数组的最初声明可以使用Dim语句或ReDim语句来实现,但括号中不能包含任何数字。
例如:
Dim MyArray()
ReDim AnotherArray()
若要使用动态数组,必须随后使用ReDim确定维数和每一维的大小。例如,下面的ReDim语句将动态数组的初始大小设置为25,而后面的Re Dim语句将数组的大小重新调整为30,同时使用Preserve关键字在重新调整大小时保留数组的内容。(www.xing528.com)
ReDim MyArray(25)
⋯
ReDim Preserve MyArray(30)
重新调整动态数组大小的次数是没有任何限制的, 但是应注意, 将数组的大小调小时,将会丢失被删除元素的数据。
【例 3.3】 输入下列代码, 分析并验证结果。
〈HTML〉
〈HEAD〉〈TITLE〉动态数组〈/TITLE〉
〈SCRIPT LANGUAGE=″VBScript″〉
〈!--
Dim Score()
Redim Score(3)
Score(0)=90
Score (1)=86
Score (2)=99
Score (3)=54
Cr=chr (13)&chr (10)
Msg=Score (0)&Cr&Score (1)&Cr&Score (2)&cr&Score (3)
MsgBox Msg
Redim Score (4)
Score (4)=78
Msg=″″
Msg=Score (0)&Cr&Score (1)&Cr&Score (2)&cr&Score (3)&cr&Score (4)
MsgBox Msg
Score (0)=30
Score (1)=40
Score (2)=50
Score (3)=60
Redim Preserve Score (5)
Score (5)=100
Msg=″″
Msg=Score (0)&Cr&Score (1)&Cr&Score (2)&cr&Score (3)&cr&Score (4)&cr&Score (4)
MsgBox Msg
- - 〉
〈/SCRIPT〉
〈/HEAD〉
〈BODY〉
〈/BODY〉
〈/HTML〉
执 行 效果 如 图 3-3 (a)、3-3 (b )、3-3 (c) 所 示 。
图3-3 例3.3显示结果
由图可以看出,第二次定义数组时之前的数值已经消失不见了;第三次定义数组时加入Preserve,便可继续保留Score(4)=78的值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。