Microsoft® Visual Basic® Scripting Edition
VBScript 变数
 VBScript 教学 
 上一页 | 下一页 

 

什麽是变数?
变数代表一个指向电脑记忆体位置的预留空间。在这个空间中,您可以储存一些在 script 执行过程中 会变动的程式资讯。举例来说,在某个网页中,您可以建立一个称做 ClickCount 的变数来储存使用者 用滑鼠点选某一个物件的次数。变数储存在电脑记忆体中的哪个位置并不重要,重要的是您只需用变数 的名称即可检视储存在其中的值、或更改这个值。在 VBScript 中,基本资料型态就是Variant
宣告变数
您可以使用 Dim 陈述式、Public 陈述式、或 Private 陈述式在 script 中明确宣告一个变数。比如像: Dim DegreesFahrenheit 您也可以同时宣告多个变数,变数之间以逗号隔开即可。比如像: Dim Top, Bottom, Left, Right 您也可以在 script 中使用它的名字来宣告一个变数。不过一般来说,这并不是一个好的方法。因为您 可能会在使用时拼错了变数的名称,而产生不可预期的执行结果。基於这个理由,您可以使用 Option Explicit 陈述式来要求所有变数都要明确宣告。您应该在 script 的开端都放上 Option Explicit 陈述式。
命名的限制
在 VBScript 中,变数的命名必须遵循一标准规则。一个变数名称中:
变数的有效范围和生命周期
一个变数的有效范围是由其宣告的地点来决定。当您在一个程序中宣告变数时,那麽就只有程序中的程 式码可以存取或更改这个变数的值。它有区域的有效范围,同时称之为程序层级变数。如果您是在程序 之外宣告一个变数,那麽script中的所有程序将都能使用这个变数。这是一个script层级的变数,同时 它有script层级的有效范围。 一个变数的存在时间称之为变数的生命周期。一个 script 层级变数的生命周期是从变数被宣告开始一 直到 script 执行完毕为止。而程序层级变数就只有在程序执行时会存在。当离开程序时,这些变数就 会消失。当程序执行时,区域变数是一个用来暂存资料的绝佳选择。您可以在许多个不同程序中宣告同 样名称的区域变数,因为只有变数所在的程序才会认得该变数。
指定值给变数
指定值给变数所要使用的运算式如下:变数在运算式的左边,您要指定给变数的值在右边。举例来说,像: B = 200
单一值变数和阵列变数
在大多数的情形下,您只会想指定单一个值给您宣告的变数。一个含有单一个值的变数称为单一值变数 。在某些情形中,指定数个相关的值给一个变数会比指定一个来得方便。此时,您就可以建立一个可以 包含一群值的变数。这种变数称之为阵列变数。宣告阵列变数和宣告单一值变数是相同的,但是在宣告 阵列变数时,您需要在变数名称後面加上括号 ( )。在下面的例子中,我们宣告了一个含有 11 个元素 的一维阵列: Dim A(10) 虽然在括号中的数字是10,不过因为在 VBScript 中的所有阵列都是以零为基底的阵列,所以这个阵列 实际上包含了 11 个元素。在以零为基底的阵列中,阵列的元素个数永远是括号中的数字再加 1。这种 类型的阵列称为固定大小的阵列。

您可以使用索引来指定值给阵列中的元素。索引的值由零开始,其最大值到10。您可以用下列的方式把 资料指定给阵列中的元素: A(0) = 256 A(1) = 324 A(2) = 100 . . . A(10) = 55 同样地,您也可以使用索引值来读取特定阵列元素中的资料。比如像: . . . SomeVariable = A(8) . . . 阵列并不一定要是一维阵列,它最大可以到达 60 维。不过大部分的人通常最多都只用到三或四维。宣告 多维阵列的方法是在括号中填入阵列各个维度的大小,而每个数字之间是以逗号隔开。在下面的例子中, MyTable 这个变数是一个二维阵列,它包含了 6 个资料列和 11 个资料行: Dim MyTable(5, 10) 在一个二维的阵列中,第一个数字代表资料列的数目;第二个则代表资料行的数目。 您也可以宣告一个在 script 执行过程中大小会改变的阵列。这种阵列称之为动态阵列。在程序中,您可 以用 Dim 陈述式或 ReDim 陈述式来宣告动态阵列。然而在动态阵列的宣告中,括号内不必填入任何维度 或阵列的大小。比如像: Dim MyArray() ReDim AnotherArray() 当您要使用动态阵列时,您必须先使用 ReDim 来决定阵列的维度以及每个维度的大小。在下面的例子中, ReDim 首先将动态阵列的起始大小设为 25,之後的 ReDim 陈述式则将大小修改为 30,同时它使用 了 Preserve 这个关键字,它可以在阵列大小改变时,使原来储存在阵列中的 资料得以保存。 ReDim MyArray(25) . . . ReDim Preserve MyArray(30) 动态阵列之大小变化的次数并没有任何限制。不过,您应该注意的是,当您缩小阵列的大小时,存放在被 删除掉的元素中的资料都会消失不见。


[an error occurred while processing this directive]