VBScript 变量声明与数据类型:Dim、String、Boolean

变量是编程的基础。变量用于保存值或表达式。每当您要处理一段数据时,都必须声明一个变量。

例如,如果您要存储学生姓名或员工薪资,您将使用名为“students”或“salaries”的变量。

变量也可用于保存表达式。假设您使用变量 markE 和 markM 存储了学生在英语和数学上的分数。

您想计算总分。然后,您可以使用名为 markT 的变量,并将其值设置为 markE + markM。换句话说,markT = markE + markM。这里,markT 是一个保存表达式的变量。

声明变量

声明变量与创建变量相同,因为您是在指示计算机保留内存空间。您可以按自己喜欢的方式命名变量。它可以是像 x、y 或 z 这样的短名称,也可以是像 student、Name、salary 等更具描述性的名称。提供清晰有意义的变量名被认为是良好的编程实践。

VBScript 变量名有一些规则。

  1. 变量名必须以字母开头。示例:salary、mark 等。不允许以数字或特殊字符开头的变量。示例:1stSchool、3rdCar、_name 等。
  2. 变量名不能超过 255 个字符。
  3. 变量名不应包含句点(.)。

要声明变量,您需要使用关键字 Dim。假设您计划在您的VBScript 程序中使用一个名为“salary”的变量,语法为:

Dim salary;

仅声明 VBS 变量是不够的,您需要使用它。您必须在某个时间点为其分配一个值,这个过程称为初始化变量。如果您计划声明一个名为 salary 的变量,您可以这样编写代码:

Dim salary
salary = 10000

您需要确保的重要事项是,在声明变量时不要为其分配值。假设您写了如下语句:

Dim salary = 10000

如果您尝试使用 document.write 输出 salary,它将不会返回任何输出。

代码示例

步骤 1) 打开您的文本编辑器并添加以下代码行。

<html>
<head>
<title>Variables</title>
</head>
<body>

<script type="text/vbscript">
Dim variable1
variable1="John"
document.write(variable1)
‘Dim variable2 = "Smith"
‘document.write(variable2)
</script>

</body>
</html>

步骤 2) 将此文件以 variable.html 的名称保存在您喜欢的位置,然后(按照上一章的说明)在 IE 中打开它。现在,您将在浏览器中看到“John”这个值。

步骤 3) 接下来,取消注释第 11 和 12 行。

再次保存文件,如果 IE 浏览器已打开,请刷新它,或者在 IE 浏览器中打开该文件。您可能会惊奇地发现什么都没有,既没有 John 也没有 Smith。这里的问题是,您试图在声明变量时为其赋值,这是不允许的。

松散绑定

VBScript 允许您在不声明变量的情况下使用变量(称为松散绑定)。例如,在没有语句 Dim student 的情况下,您可以为变量 student 赋值,例如:student = “John”。

但是,这绝不是一个好的编程实践。如果您在使用未声明的变量时拼写错误,VBScript 将不会提示您错误。

因此,为了使代码更易于阅读和识别错误,您应该在代码开头使用 Option Explicit 语句,这样即使您忘记声明所有变量,也会强制您声明它们。为了避免与变量类型相关的问题,最好在 VBScript 代码开头指定 Option Explicit 语句。

代码示例

步骤 1) 打开您的文本编辑器并添加以下代码行。

<html>
<body>
<script type="text/vbscript">
Option Explicit
‘Dim markE, markM, markT
markE=90
markM=86
markT=markE+markM
document.write("Your marks in English is " & markE & "." & "<br />")
document.write("Your marks in Mathematics is " & markM & "." & "<br />")
document.write("Your total marks is " & markT & ".")
</script>

</body>
</html>

步骤 2) 将文件以 variables.html 的名称保存在您喜欢的位置。现在,在 Internet Explorer 中打开该文件,您的屏幕将是空白的。为什么?因为您使用了 option explicit,但在使用它们之前没有声明变量。

步骤 3) 现在,为了理解 Option Explicit 语句的重要性,请取消注释上面代码中的第 5 行。

步骤 4) 保存 variables.html 文件并刷新您的浏览器。现在,您的输出将如下所示:

Loose Binding

注意 – 要连接两个字符串,您需要使用“&”。在上面的示例中,它在 document.write 命令中使用。总分数计算错误是很明显的。现在,只需在 VBScript 代码开头添加第一条语句 Option Explicit(不含 Dim 语句)。

保存文件并查看输出。您将看不到任何输出,这表明您的代码存在错误。这里的错误是,即使指定了 Option Explicit 语句,您也没有在使��之前声明变量。

您还可以使用 public 和 private 关键字声明变量,例如 public student 或 private student。但是,在使用这两个关键字声明变量时必须格外小心,因为它们会改变变量的作用域。

您还可以将多个值存储在单个变量中,这些变量称为VBScript 数组变量。假设您要存储 30 个学生姓名、分数、地址等详细信息。创建和管理 30 个姓名、分数、地址等变量集将非常困难。

相反,您可以声明一个名为 students 的单个变量,并将所有 30 个学生的名字存储在这个变量中。在这种情况下,您将声明变量为 Dim students(29)(数组索引从零开始),并按如下方式赋值:

students(0) = "John"
students(1) = "Hannah"
students(2) = "Kevin"
.......
.......
students(28) = "Rose"
students(29) = "Emma"

同样,您可以创建 marks、address 等变量来存储所有 30 个学生的相应值。您还可以创建多维数组,最多可以有 60 个维度。

代码示例

打开您的文本编辑器并添加以下代码行。

<html>
<body>

<script type="text/vbscript">
Option Explicit
Dim students(19), marks(19)
students(0) = "John"
marks(0) = 95
students(1) = "Emma"
marks(1) = "83"
students(2) = "Kevin"
marks(2) = 87
 
document.write(students(0) & " has scored " & marks(0)  & ".<br />")
document.write(students(1) & " has scored " & marks(1)  & ".<br />")
document.write(students(2) & " has scored " & marks(2)  & ".<br />")
</script>

</body>
</html>

这里,我们只存储了三个学生的信息。您可以添加最多 20 个学生的信息,因为我们将数组大小设置为 20(索引从 0 开始)。

VBScript 数据类型

在上一节中,您可能已经注意到我们为变量分配了不同类型的数据。我们存储了数字(mark 和 salary)、字符串(name)等。在不同的变量中。

这些数字、字符串等称为数据类型。事实上,VBScript 只有一种数据类型,称为 Variant。Variant 是一种特殊的数据类型,可以包含不同类型的信息。

如果您在数字上下文中使�� Variant,它表现得像一个数字;当您在字符串上下文中使��它时,它表现得像一个字符串。

换句话说,当您设置 salary=10000 时,VBScript 会假定 salary 是数字数据类型。Variant 会对数据的性质做出特定区分。例如,您可以使用 variant 类型来存储布尔值、货币、日期等。

Variant 可以包含的这些不同的信息类别称为子类型。虽然大多数时候 Variant 的表现方式最适合它包含的数据,但您应该了解不同的子类型。

以下是 VBScript 数据类型列表。

  • Empty:一个特殊的子类型,用于表示尚未为变量分配任何值的变量。
  • Null:一个特殊的子类型,用于表示已分配 null 值的变量。
  • Integer:使用 2 字节表示范围在 -32,768 到 32,767 之间的有符号整数。
  • Long:使用 4 字节表示范围在 -2,147,483,648 到 2,147,483,647 之间的有符号整数。
  • Single:使用 4 字节表示浮点格式的实数,负值范围为 -3.402823e38 到 -1.401298e-45,正值范围为 1.401298e-45 到 3.402823e38。
  • Double:使用 8 字节表示浮点格式的实数,负值范围为 -1.79769313486232e308 到 -4.94065645841247e-324,正值范围为 4.94065645841247e-324 到 1.79769313486232e308。
  • Currency:使用 8 字节表示十进制格式的实数,范围在 -922,337,293,685,477.5808 到 922,337,293,685,477.5807。
  • Date:使用 8 字节表示日期,范围从公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日。
  • String:每字符使用 1 字节表示字符序列,最多可达约 20 亿个字符。
  • Object:一个特殊的子类型,用于表示对对象的引用。
  • Error:一个特殊的子类型,用于表示错误编号。
  • Boolean:使用 2 字节包含 True 或 False。
  • Byte:使用 1 字节表示范围在 0 到 255 之间的整数。

有两个内置的VBScript 函数可以帮助您了解变量的子类型:“varType()”和“typeName()”。

varType 返回数字表示,typeName() 返回变量子类型的文本表示。每个子类型都有预定义的数字表示。

代码示例

打开您的文本编辑器并添加以下代码行。

<html>
<head>
<script type="text/vbscript">
Option Explicit
Dim a
a = Empty
document.write("a = " & a & "<br />")
document.write("The numeric representation of a is " & VarType(a)  & "<br />")
document.write("The variable a is of " & TypeName(a) & " data type."  & "<br /><br />")

Dim b
b = Null
document.write("b = " & b & "<br />")
document.write("The numeric representation of b is " & VarType(b)  & "<br />")
document.write("The variable b is of " & TypeName(b) & " data type."  & "<br /><br />")

Dim c
c = 4
document.write("c = " & c & "<br />")
document.write("The numeric representation of c is " & VarType(c)  & "<br />")
document.write("The variable c is of " & TypeName(c) & " data type."  & "<br /><br />")

Dim d
d = -2100483648
document.write("d = " & d & "<br />")
document.write("The numeric representation of d is " & VarType(d)  & "<br />")
document.write("The variable d is of " & TypeName(d) & " data type."  & "<br /><br />")

Dim e
e = -3.402823E38
document.write("e = " & e & "<br />")
document.write("The numeric representation of e is " & VarType(e)  & "<br />")
document.write("The variable e is of " & TypeName(e) & " data type."  & "<br /><br />")

Dim f
f = "John"
document.write("f = " & f & "<br />")
document.write("The numeric representation of f is " & VarType(f)  & "<br />")
document.write("The variable f is of " & TypeName(f) & " data type."  & "<br /><br />")

Dim g
g = True
document.write("g = " & g & "<br />")
document.write("The numeric representation of g is " & VarType(g)  & "<br />")
document.write("The variable g is of " & TypeName(g) & " data type."  & "<br /><br />")
</script>

</head>
<body>
</body>
</html>

将文件保存为 subtype.html 并在 IE 中打开。您的输出将如下所示:

VBScript Data Types

注意:您还可以使用 **public** 和 **private** 关键字声明变量,例如 public student 或 private student。但是,在使用这两个关键字声明变量时必须格外小心,因为它们会更改变量的作用域。

摘要

  • 变量用于在编程时保存值或表达式。变量需要分别声明和初始化。
  • 虽然您可以在不声明变量的情况下使用变量,但在使用变量之前声明变量被认为是一种良好的编程实践。
  • Variant 是 VBScript 的唯一数据类型,Variant 具有包括 String、Boolean、Integer、Currency 等在内的不同子类型。

故障排除

如果您在运行代码后看到一个空白页面,请执行以下操作:

  • 按 F12 打开开发人员工具。
  • 在左侧工具栏中向下滚动,直到看到“Emulation”(模拟)设置页面。
  • 将 Document Mode(文档模式)从默认值(“Edge”)更改为 10。
  • 将以下代码添加到 head 部分。
    <meta http-equiv="x-ua-compatible" content="IE=10">