VBScript 变量详解
VBScript 中的变量是松散类型的(所有变量默认都是 Variant 类型),可以存储任何数据类型(如数字、字符串、日期、对象等)。它不要求提前声明类型,甚至可以不声明直接使用,但强烈推荐养成良好习惯。
1. 变量声明
- 使用 Dim 关键字声明变量(推荐)。
- 可以一次声明多个变量。
- 建议在脚本开头添加 Option Explicit,强制所有变量必须先声明,避免拼写错误导致的 bug。
Option Explicit ' 强制声明变量(强烈推荐!)
Dim name ' 声明一个变量
Dim age, score ' 一次声明多个变量
Dim i, j, k As Integer ' 注意:VBScript 不支持这种 "As 类型" 写法,只能统一 Variant
2. 变量命名规则
- 必须以字母开头
- 不能包含空格或句点(.)
- 不能是 VBScript 保留关键字(如 Dim、If、Function 等)
- 长度不超过 255 个字符
- 不区分大小写(Name 和 name 是同一个变量)
- 建议使用有意义的名称,如 userName、totalCount
3. 变量赋值
直接用 = 赋值,变量会自动根据值确定子类型。
Dim userName
userName = "张三" ' 字符串
Dim age
age = 28 ' 整数
Dim salary
salary = 5000.50 ' 小数(Double)
Dim isMarried
isMarried = True ' 布尔值
Dim birthDate
birthDate = #2025-12-25# ' 日期(用 # 包裹)
Dim nothingVar
nothingVar = Null ' Null 值
Dim emptyVar ' 声明但未赋值 → Empty
4. Variant 子类型(变量实际存储的数据类型)
VBScript 用 VarType() 函数可以查看变量当前子类型:
| 子类型 | VarType 值 | 说明 | 示例 |
|---|---|---|---|
| Empty | 0 | 未初始化 | Dim x → VarType(x)=0 |
| Null | 1 | 无效数据 | x = Null |
| Integer | 2 | 整数 (-32768~32767) | x = 100 |
| Long | 3 | 长整数 | x = 100000 |
| Single | 4 | 单精度浮点 | x = 3.14 |
| Double | 5 | 双精度浮点 | x = 3.1415926535 |
| String | 8 | 字符串 | x = “hello” |
| Date | 7 | 日期/时间 | x = #2025-12-25# |
| Boolean | 11 | 布尔值 | x = True |
| Object | 9 | 对象 | Set obj = CreateObject(…) |
| Error | 10 | 错误对象 |
示例:
Dim x, y, z
x = 100
y = "Hello"
z = #12/25/2025#
MsgBox VarType(x) ' 输出 2 (Integer)
MsgBox VarType(y) ' 输出 8 (String)
MsgBox VarType(z) ' 输出 7 (Date)
5. 变量作用域
| 声明位置 | 作用域 | 说明 |
|---|---|---|
| 脚本最外层 Dim | 脚本级(全局) | 整个 .vbs 文件或 ASP 页面内所有过程可用 |
| Function 或 Sub 内部 Dim | 过程级(局部) | 只在该函数或子程序内有效 |
| 没有 Dim 直接使用 | 脚本级(全局) | 不推荐,容易出错 |
示例:
Option Explicit
Dim globalVar ' 全局变量
globalVar = 100
Sub TestSub()
Dim localVar ' 局部变量
localVar = 200
MsgBox globalVar ' 可以访问全局变量 → 100
MsgBox localVar ' → 200
End Sub
Call TestSub
MsgBox globalVar ' → 100
' MsgBox localVar ' 错误!localVar 在 Sub 外不可见
6. 常量(类似只读变量)
使用 Const 声明常量,值不可修改。
Const PI = 3.1415926
Const COMPANY_NAME = "xAI"
Const MAX_RETRY = 5
MsgBox PI ' 正常
' PI = 3.14 ' 错误!常量不能重新赋值
7. 数组变量
VBScript 支持动态数组和固定数组。
动态数组(大小可变):
Dim arr()
ReDim arr(5) ' 分配 0~5 共6个元素
arr(0) = "苹果"
arr(1) = "香蕉"
ReDim Preserve arr(10) ' 扩大数组并保留原有数据
多维数组:
Dim matrix(3, 4) ' 4行5列(索引 0~3, 0~4)
matrix(0,0) = 1
获取数组界限:
MsgBox LBound(arr) ' 下界,通常是 0
MsgBox UBound(arr) ' 上界
8. 实用小技巧
- 用
IsEmpty(var)判断是否未初始化 - 用
IsNull(var)判断是否为 Null - 用
IsNumeric(var)判断是否为数字 - 用
IsDate(var)判断是否为有效日期 - 用
IsObject(var)判断是否为对象 - 用
TypeName(var)获取子类型名称(返回字符串,如 “String”、”Integer”)
Dim test
MsgBox IsEmpty(test) ' True(未赋值)
test = "123"
MsgBox IsNumeric(test) ' True
小结
- 永远使用
Option Explicit - 尽量用 Dim 声明变量
- 变量类型自动转换,非常灵活,但也容易出错(建议用 VarType 检查)
- 常量用 Const 声明
- 数组用 ReDim 动态调整大小
如果你有具体问题,比如“如何声明对象变量”“数组排序”“变量类型转换”等,随时告诉我,我可以给出详细示例代码!