创建一个变量

VBScript 变量名称的规则:

  • 必须以字母开头
  • 不能包含点号(.)
  • 不能超过 255 个字符

在 VBScript 的缩写中,所有的变量都与类型 variant 相关,可存储不同类型的数据。

类型 variant

VBScript 常用的数据类型有三种:

Dim:

Dimension 的缩写,是你定义变量的保留关键字,同时也会给变量分配内存。在脚本级别用Dim定义的变量,在脚本内部所有的过程内都可调用;在单独过程内用Dim定义的变量,只有当前过程可以调用。

Public和Private:

Public,跟Dim完成的基本功能类似,也能定义变量分配内存。更类似于形容词,形容你定义的类别是公用的,可以形容Class,变量等等。它定义的东东,在所有的脚本和所有的过程内都可调用,范围比Dim大了许多。但是平时的使用,我们用Dim就完全能够解决问题了,所以Public的使用很少。

在 Class 块中,成员通过相应的声明语句被声明为 Private 或 Public。被声明为 Private 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Public。

声明(创建)VBScript 变量

在 VBScript 创建变量通常指"声明"变量,而声明变量指的是定义变量,这与普通的计算机语言不同。

现在我们通过Dim语句声明 VBScript 变量。如下所示:

Dim x
Dim carname

我们也可以在脚本中通过使用它的名称来声明变量。如下所示:

carname = "Volvo"

但是这种创建变量的方法不是一个好习惯,因为可能会在脚本中拼错变量名,那样可能会在脚本运行时引起奇怪的结果。

如果您拼错变量名,比如 "carname" 变量错拼为 "carnime",脚本会自动创建一个名为 "carnime" 的新变量。为了防止脚本这样做,您可以使用 Option Explicit 语句。如果您使用这个语句,就必须使用 dim、public 或 private 语句来声明所有的变量。

Option Explicit 语句放置于脚本的顶端,如下所示:

Option Explicit
Dim carname
carname = some value

但这似乎也不是一个很好的方法,因为你必须在程序开始之前就考虑所有的变量,这几乎是不可能的。而且在程序开始之前,内存便将程序运行过程中所有的变量都一一分配,而很多时候根本只有很少的一部分代码块才会使用这些变量,这对于内存也是一种极大的浪费。所以靠程序员自身对于变量的掌握才是更重要的。

为变量赋值

您可以为某个变量赋值,如下所示:

carname="Volvo"
x=10

变量名是在表达式的左侧,需要赋给变量的值在表达式的右侧。现在变量 "carname" 的值是 "Volvo",变量 "x" 的值是 "10"。

变量的生存期

变量的生存期指的是它可以存在的时长。

当您在一个子程序中声明变量时,变量只能在此程序内进行访问。当退出此程序时,变量也会失效。这样的变量称为本地变量。您可以在不同的子程序中使用名称相同的本地变量,因为每个变量只能在声明它的程序内得到识别。

如果您在子程序以外声明了一个变量,在您的页面上的所有子程序都可以访问它。这类变量的生存期始于它们被声明,止于页面被关闭。

VBScript 数组变量

数组变量用于在一个单一的变量中存储多个值。

在下面的实例中,声明了一个包含 3 个元素的数组:

Dim names(2)

括号内显示的数字是 2。数组的下标以 0 开始,因此该数组包含 3 个元素。这是容量固定的数组。您可以为数组的每个元素分配数据,如下所示:

names(0)="Tove"
names(1)="Jani"
names(2)="Stale"

同样地,通过使用特定数组元素的下标号,可以取回任何元素的值。如下所示:

mother=names(0)

可以在一个数组中使用多达 60 个维数。声明多维数组的方法是在括号中用逗号来分隔数字。这里,我们声明了一个包含 5 行 7 列的 2 维数组:

Dim table(4,6)

创建一个VBScript 程序

VBScript 可使用两种程序:

  • 子程序
  • 函数程序

VBScript 子程序

子程序:

  • 是一系列的语句,被封装在 Sub 和 End Sub 语句内
  • 可执行某些操作,但不会返回
  • 可带有参数
Sub mysub()
some statements
End Sub

或者

Sub mysub(argument1,argument2)
some statements
End Sub

在 VBScript 中似乎将整个编写的程序认定为主程序,而类似于C语言中的主程序 main 则被认定与是子程序,一个程序只允许出现一个子程序。

VBScript 函数程序

函数程序

  • 是一系列的语句,被封装在 Function 和 End Function 语句内
  • 可执行某些操作,并会返回
  • 可带有通过程序调用来向其传递的参数。
  • 如果没有参数,必须带有空的圆括号 ()
  • 通过向函数程序名赋值的方式,可使其返回值
Function myfunction()
some statements
myfunction=some value
End Function

或者

Function myfunction(argument1,argument2)
*some statements*
myfunction=*some value*
End Function

函数程序则与其他大部分的语言一致,就是外部定义函数程序的意思。

调用程序

这个简单的函数程序被调用来计算两个参数的和:

Function myfunction(a,b)
myfunction=a+b
End Function document.write(myfunction(5,9))

函数 "myfunction" 将返回参数 "a" 和参数 "b" 的和。这里返回的是 14。

当您调用程序时,您可以使用 Call 语句,如下所示:

Call MyProc(argument)

或者,您可以省略 Call 语句,如下所示:

MyProc argument

Call 语句:

参数:

Call:可选项关键字。如果指定此关键字,则必须用括号把 argumentlist 括起来。例如:Call MyProc(0)

functionname:必选项。要调用的过程名。

argumentlist:可选项。传递给过程的变量、数组或表达式列表,用逗号分隔每一项。

说明:

在调用过程时,不必使用 Call 关键字。然而,如果使用 Call 关键字调用要求参数的过程,则必须用括号将 argumentlist 括起来。如果省略 Call 关键字,那么必须也同时省略 argumentlist 参数两边的括号。使用 Call 语法调用内部函数或使用用户自定义函数,函数返回值都会被放弃。

例:

Call MyFunction("Hello World")

Function MyFunction(text)
MsgBox text
End Function

VBScript 条件语句

与其他计算机语言相同,VBScript 也有像对应的条件判断语句。在 VBScript 中,我们可以使用四种条件语句:

  • If 语句 - 假如您希望在条件为 true 时执行一系列的代码,可以使用这个语句
  • If...Then...Else 语句 - 假如您希望执行两套代码其中之一,可以使用这个语句
  • If...Then...ElseIf 语句 - 假如您希望选择多套代码之一来执行,可以使用这个语句
  • Select Case 语句 - 假如您希望选择多套代码之一来执行,可以使用这个语句

If

与一般计算机语言一致,当条件为 true 时,执行某段代码。

If i=10 Then alert("Hello")

当我们要执行的语句不止一条,而是一个语句块时,我们可以这样写。

If i=10 Then
alert("Hello")
i = i+1
End If

值得注意的是,由于 VBScript 并没有C语言的 { } 所以当使用语句时候请注意结束语句。

If...Then...Else

如果想要在条件为 true 时执行某条语句,并在条件不为 true 时执行另一条语句,就必须添加关键词 else

If i < 10 Then
document.write("Good morning!")
Else
document.write("Have a nice day!")

If...Then...ElseIf

这相当于C语言中的 if-else 的嵌套,在 VBScript 中我们一般才采用下面的方式。

If i = 10 Then
document.write("Just started...!")
ElseIf i = 11 Then
document.write("Hungry!")
ElseIf i = 12 Then
document.write("Ah, lunch-time!")
ElseIf i = 16 Then
document.write("Time to go home!")
Else
document.write("Unknown")
End If

Select Case

如果您想要像C语言中的 switch 选择多套代码之一来执行,可以使用 "Select Case" 语句:

Select Case d
Case 1
document.write("Sleepy Sunday")
Case 2
document.write("Monday again!")
Case 3
document.write("Just Tuesday!")
Case 4
document.write("Wednesday!")
Case 5
document.write("Thursday...")
Case 6
document.write("Finally Friday!")
Case else
document.write("Super Saturday!!!!")
End Select

VBScript 循环

循环语句用于运行相同的代码块指定的次数。在 VBScript 中,我们可以使用四种循环语句:

  • For...Next 语句 - 运行一段代码指定的次数
  • For Each...Next 语句 - 针对集合中的每个项目或者数组中的每个元素来运行某段代码
  • Do...Loop 语句 - 运行循环,当条件为 true 或者直到条件为 true 时
  • While...Wend 语句 - 不要使用这个语句 - 请使用 Do...Loop 语句代替它

For...Next 循环

For i=2 To 10 Step 2
some code
Next

通过 Step 关键词,您可以规定计数变量递增或递减的步进值。在上面的例子中每次递增的值为2.当然你也可以不写,没有 Step 时默认为1。

For i = 0 To 5
some code
Next

同时也可以使用类似于C语言 break 语句来跳出循环。

For i=1 To 10
If i=5 Then Exit For
some code
Next

For Each...Next 循环

For Each...Next 针对集合中的每个项目或者数组中的每个元素来重复运行某段代码。

当你的过程需要在一个集合的所有对象或者一个数组的所有元素之间循环时,应该使用 For Each...Next 循环。该循环不需要 计数器变量,VBScript 自己知道应该执行几次循环。我们拿工作表集合作个例子,要删除工作簿里面的工作表,你首先不得不要选择它,再选择“编辑”-“删除工作表”。如果要只留一个工作表在工作簿里面的话,你就不得不使用同样的命令,次数取决于工作表的总数。因为每个工作表都是工作表集合里的一个对象,所以使用 For Each…Next 循环来加速删除工作表。

Dim cars(2)							// 声明数组,并将其赋值
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW" For Each 元素 In 组合
语句1
语句2
语句N
Next [元素]

Do...Loop 循环

如果你不知道重复多少次,可以使用 Do...Loop 语句。

Do...Loop 语句重复执行某段代码直到条件是 true 或条件变成 true。

重复执行代码直到条件是 true

您可以使用 While 关键字来检查 Do... Loop 语句的条件。

Do While i>10			// 先判断后运行代码
some code
Loop

如果 i 等于 9,上述循环内的代码将终止执行。

Do						// 先执行代码后判断
some code
Loop While i>10

这个循环内的代码将被执行至少一次,即使 i 小于 10。

重复执行代码直到条件变成 true

您可以使用 Until 关键字来检查 Do...Loop 语句的条件。

Do Until i=10
some code
Loop

如果 i 等于 10,上述循环内的代码将终止执行。

Do
some code
Loop Until i=10

这个循环内的代码将被执行至少一次,即使 i 等于 10。

退出 Do...Loop

您可以通过 Exit Do 关键词退出 Do...Loop 语句。

Do Until i=10
i=i-1
If i<10 Then Exit Do
Loop

这个循环内的代码,只要 i 不为 10 且 i 大于 10 时都将被执行。

VBScript 学习笔记的更多相关文章

  1. 【工作笔记】BAT批处理学习笔记与示例

    BAT批处理学习笔记 一.批注里定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD,这些命令统称批处理命令. 二.常见的批处理指令: 命令清单: 1.RE ...

  2. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  3. JavaScript学习笔记(十五)——对象之Date,RegExp

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  4. Java Web 学习笔记 1

    Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...

  5. JavaScript学习笔记[0]

    JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...

  6. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  9. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

随机推荐

  1. Java学习点滴——泛型

    基于<Java编程思想>第四版 前言 虽然Java的泛型在语法上和C++相比是类似的,但在实现上两者是全然不同的. 语法 Java只需要一个<>就可定义泛型.在<> ...

  2. js常用JSON数据操作

    JSON字符串: var  str = '{"name": "jack", "age": 13}'; JSON对象: var obj = { ...

  3. 硬杠后端(后端坑系列)——Django前期工作

    Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC的框架模式. MVC MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件 ...

  4. android 卡顿 Matrix TraceCanary

    转载: 通过观察大盘整体的帧率及掉帧程度,来评估并监控一些重要场景的流畅性.通过一个闭环的流程,利用 Matrix-TraceCanary 模块从客户端对卡顿进行捕捉与分析上报,通过后台聚类问题堆栈及 ...

  5. DVWA 黑客攻防演练(十一) 存储型 XSS 攻击 Stored Cross Site Scripting

    上一篇文章会介绍了反射型 XSS 攻击.本文主要是通过 dvwa 介绍存储型 XSS 攻击.存储型 XSS 攻击影响范围极大.比如是微博.贴吧之类的,若有注入漏洞,再假如攻击者能用上一篇文章类似的代码 ...

  6. 基于GitLab的Code Review教程

    一.前言 1.本文主要内容 GitLab Code Review机制说明 Git Workflow 与 Git Code Review Workflow GitLab Code Review 配置说明 ...

  7. zabbix监控交换机状态

    1.在Zabbix中添加主机 输入名称.群组和交换机IP(交换机要开启snmp) 2.创建监控项 输入OID和其它信息(键值随便填,但是不能和系统内的键值重复)OID获取方法可查看上一篇文章:http ...

  8. gradle下载及配置

    windows安装 1.下载地址:http://services.gradle.org/distributions/ 2.下载**-bin.zip,解压即可 配置环境变量:gradle_home:D: ...

  9. Java基础系列--01_基础类型

    J2SE.J2ME.J2EE分别指什么? J2SE 基础版,桌面应用. J2ME 微型版,手机开发.(android,ios) J2EE 企业版,所有浏览器访问的应用程序. 注意:JDK5以后改名 J ...

  10. springboot 2.1.4 源码默认logback-spring.xml

    logback-spring.xml 是由几个文件组成的,整个的一个xml为 <?xml version="1.0" encoding="UTF-8"?& ...