VBScript 学习笔记
创建一个变量
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 学习笔记的更多相关文章
- 【工作笔记】BAT批处理学习笔记与示例
BAT批处理学习笔记 一.批注里定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD,这些命令统称批处理命令. 二.常见的批处理指令: 命令清单: 1.RE ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- JavaScript学习笔记(十五)——对象之Date,RegExp
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- Java Web 学习笔记 1
Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...
- JavaScript学习笔记[0]
JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
随机推荐
- Django之模板系统
变量的使用: def test(request): num=1 s='hello' li=[1,2,['a','b']] dic={'name':'w','age':1} se={1,2,3} tup ...
- 头部banner根据网址高亮
$(function(){ var urlstr = location.href; $(".nav li a").each(function () { if ((urlstr + ...
- Android 最简单的测试UI卡顿
就两个类: public class BlockDetectByPrinter { private static final String START = ">>>> ...
- Android为TV端助力 使用shared注意事项
不要存放大的key和value!我就不重复三遍了,会引起界面卡.频繁GC.占用内存等等,好自为之! 毫不相关的配置项就不要丢在一起了!文件越大读取越慢,不知不觉就被猪队友给坑了:蓝后,放进defalu ...
- Eclipse 新建jsp文件报错问题
今天在web工程中新建一个index.jsp文件时,发现会报错,记录一下解决办法. 原因:缺少servlet-api.jar包 所以我们先去下载一个jar包,将它引入我们的工程中,即可. 工程右键-& ...
- 【记录】使用在线KMS激活win10系统
摘要 网上一些激活工具可能捆绑了木马.病毒.使用激活工具有风险.使用在线KMS来激活系统则没有这个风险.(自测至发布日期仍然可用) (有能力的请支持正版windows系统) 将kms服务器地址设置为k ...
- asp.net FromBody接收不到参数的解决方法
今天改一个前端框架(angularjs,不兼容ie内核,需要修改),后台框架是已经写好了的,不用修改. 接口接收参数如下: [HttpPost] public async Task<Schedu ...
- 订制rpm包到Centos7镜像中
本文以CentOS 7.4 最小化镜像(CentOS-7-x86_64-Minimal-1708.iso)为模版 要达到的目的: 1.订制所需的rpm软件包集成到iso文件中 2.制作完成的ISO全自 ...
- 【spring源码分析】IOC容器初始化(九)
前言:上篇文章末尾提到createBeanInstance方法中使用工厂方法实例化Bean对象,本文将对该方法进行分析. AbstractAutowireCapableBeanFactory#inst ...
- Ubuntu安装Navicat 12 for MySQL
环境准备 要想运行Navicat,必须先安装Wine,这个可以使用下面的命令来安装Wine: ubuntu@ubuntu ~ $ sudo apt-get install wine-stable 安装 ...