VBScript 变量

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 值说明示例
Empty0未初始化Dim x → VarType(x)=0
Null1无效数据x = Null
Integer2整数 (-32768~32767)x = 100
Long3长整数x = 100000
Single4单精度浮点x = 3.14
Double5双精度浮点x = 3.1415926535
String8字符串x = “hello”
Date7日期/时间x = #2025-12-25#
Boolean11布尔值x = True
Object9对象Set obj = CreateObject(…)
Error10错误对象

示例:

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 动态调整大小

如果你有具体问题,比如“如何声明对象变量”“数组排序”“变量类型转换”等,随时告诉我,我可以给出详细示例代码!

文章已创建 3511

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部