3.5.1 过程
在 VBScript 中,可以通过定义过程来完成特定的功能。VBScript 根据过程是否有返回值将 过程划分为 Sub(子)过程和 Function(函数)过程。VBScript 的过程有如下几个特点:
过程只能有单一入口,但可以有多个出口。
在浏览器的任何一个网页中都可以定义过程,习惯上将过程定义在<HEAD>和
</HEAD>中。
可以用浏览器所特有的事件来调用。
通过过程可以将重复使用的代码单独定义,提高代码利用率。
过程使得查错和改错工作变得简单。
可以向过程中传递任何有效的参数。
3.5.2 子过程
Sub 过程是没有返回值的过程,一般格式如下:
[Private][Public]Sub 过程名[(参数列表)]
[语句块]
[Exit Sub]
[语句块]
End Sub
上面格式中的 Private 关键字表示此过程是私有过程,只能被进行过声明的脚本中的其他 过程调用;而 Public 表示此过程是公有过程,可以被脚本中的其他任何过程调用。如果省略 此关键字,则默认为 Public。
参数列表是可选项,表示子过程的参数,参数用于在调用过程和被调用过程之间传递信 息,多个参数之间用逗号分开。
Sub 过程以 Sub 开头,以 End Sub 结束。每次调用子过程都会执行 Sub 和 End Sub 之间的 语句。也可以在过程体内使用一个或多个 Exit Sub 语句终止过程的执行。
Sub 过程不能嵌套,即在一个 Sub 过程内,不能再定义另一个 Sub 过程或 Function 过程。
只能通过调用执行另一个 Sub 过程,即可以嵌套调用。下面的例子完成的功能是从键盘输入 两个数,求两数之和。
例 3-5-1:
<HTML>
<HEAD><TITLE>Sub 过程程序举例</TITLE>
<SCRIPT LANGUAGE=VBScript>
<!-- dim x,y
x=CDbl(InputBox("请输入 x 的值")) y=CDbl(InputBox("请输入 y 的值"))
call OutputAdd(x,y) '调用 OutputAdd 过程,并传递 x 和 y 的值 Sub OutputAdd(a,b)
dim z z=a+b
MsgBox "两数之和是:" & z End Sub
-->
</SCRIPT></HEAD>
<BODY>
……
</BODY></HTML>
由上面的例子可以看出,定义子过程后,就可以在程序代码中调用。调用的方式有两种,
一种是用 Call 语句,另一种是直接用子过程名。调用子过程时,调用语句必须是一个独立的 语句。
用 Call 语句调用子过程的语法如下:
Call 子过程名([参数列表]) 直接使用子过程名的语法如下:
子过程名 [参数列表]
这种调用子过程的特点是子过程名和后面的参数列表之间用空格隔开,不需要加括号。
上面例子中的过程调用语句 call OutputAdd(x,y)也可以改为如下形式:
OutputAdd x,y
在子过程中可以使用 Exit Sub 语句强制从子过程中退出并返回。
3.5.3 函数
函数与子过程一样,也是用来完成特定功能的独立的程序代码。两者的区别是:子过程 没有返回值,而函数在调用时将返回一个值。函数的语法如下:
[Private][Public] Function 过程名[(参数列表)]
[语句块]
函数名=表达式 [Exit Function]
[语句块]
End Function
其中“函数名=表达式
”
语句用于为函数设置返回值,该值将返回给调用的语句,函数中 至少要含有一条这样的语句。类似于子过程,函数中可以用 Exit Function 语句直接退出函数。在 VBScript 中编写的函数可以像 VBScript 提供的内部函数一样在表达式中使用。下面的 程序使用函数求两个数之和。
例 3-5-2:
<HTML>
<HEAD><TITLE>Function 程序举例</TITLE>
<SCRIPT LANGUAGE=VBScript>
<!--
dim x,y,FuncResult
x=cdbl(InputBox ("请输入 x 的值")) y=cdbl(InputBox ("请输入 y 的值"))
FuncResult=OutputAdd(x,y) '调用 OutputAdd 函数,并传递 x 和 y 的值 MsgBox "两数之和是:" & FuncResult
Function OutputAdd(a,b) dim z
z=a+b OutputAdd=z End Function -->
</SCRIPT></HEAD>
<BODY>
……
</BODY></HTML>
函数可以在表达式中进行调用。调用函数时,参数两边的括号不能省略。
同样,也可以用 Call 语句来调用函数。用 Call 语句调用时,VBScript 将放弃返回值。例如:
Call OutputAdd(x,y)
无参数函数的调用与变量的使用一样,只要使用函数名即可。
3.5.4 VBScript 内部函数摘要 1.数学函数
数学函数包括求平方根函数、求绝对值函数、指数函数和对数函数等。用来完成各种数 学运算。在 VBScript 中提供的常用数学函数有以下几种(假设 x 为一个数值表达式):
求平方根函数(Sqr):返回自变量 x 的平方根,x 必须大于或等于 0。例如:
Sqr(2)=1.4142135623731
求绝对值函数(Abs):返回自变量 x 的绝对值。例如:
Abs(-2)=2
指数函数(Exp):返回以 e 为底、以 x 为指数的值,即求 e 的 x 次幂。例如:
Exp(2)=7.38905609893065
对数函数(Log):返回自变量 x 的自然对数。例如:
Log(2)=0.693147180559945
符号函数(Sgn):返回自变量 x 的符号。当 x 为正数时,函数返回 1;当 x 为负数时,
函数返回-1;当 x 为 0 时,函数返回 0。例如:
Sgn(-5)=-1
三角函数
Sin(x)函数:返回自变量 x 的正弦值。
Cos(x)函数:返回自变量 x 的余弦值。
Tan(x)函数:返回自变量 x 的正切值。
Atn(x)函数:返回自变量 x 的反正切值。
2.字符串函数
字符串函数用于对字符串进行相应的处理。在 VBScript 中,常用的有以下几种:
空格函数 Space(n):返回 n 个空格。
删除空白字符函数 Trim(字符串):去掉字符串两端的空白字符。空白字符包括空格、
Tab 键等。例如:
Trim(" 欢迎您! ")="欢迎您!"
字符串长度测试函数 Len(字符串|变量名):如果 Len 函数的自变量为字符串,则返回 字符串的长度;如果自变量为变量名,则返回变量的存储空间。例如:
Len("欢迎您!")=4
字符串截取函数:截取字符串,可以从字符串的左部、中部或右部截取。包括:
Left(字符串,n):左部截取,返回字符串的前 n 个字符。例如:
Left(" 华北航天工业学院",4)= "华北航天"
Mid(字符串,p,n):中部截取,返回从第 p 个字符开始,向后的 n 个字符。例如:
Mid("华北航天工业学院",5,2)= "工业"
Right(字符串,n):右部截取,返回字符串的后 n 个字符。例如:
Right("华北航天工业学院",2)= "学院"
字母大小写转换函数:用来对字母的大小写进行转换。包括:
Ucase(字符串):将字符串中的小写字母转换为大写字母。例如:
Ucase("Chinese")="CHINESE"
Lcase(字符串):将字符串中的大写字母转换为小写字母。例如:
Lcase("CITY")="city"
字符串匹配函数:用来在一个字符串中查找另一个字符串。格式为:
InStr([首字符位置,]字符串 1,字符串 2[,n])
该函数在字符串 1 中查找字符串 2,如果找到了,则返回字符串 2 的第一个字符在字 符串 1 中的位置;如果没找到,则返回 0。例如:
InStr("华北航天工业学院"," 航天")=3 3.日期和时间函数
日期函数,包括:
Year(Now):返回当前系统的年份。
Month(Now):返回当前系统的月份。
Day(Now):返回当前系统的日期。
WeekDay(Now[,n]):返回当前系统的星期。
其中,参数 n 是可选的,它的取值范围从 0~7。用来设定每周的第 1 天从星期几开 始,如果不设定此参数,则默认从星期日开始。如果设置此参数,则 0 表示采用系统默 认设置,1~7 分别代表星期日到星期六。如当前系统日期为 2003 年 5 月 23 日,则:
WeekDay(Now)=6
时间函数,包括:
Hour(Now):返回当前系统的小时(0~23)。 Minute(Now):返回当前系统的分钟(0~59)。 Second(Now):返回当前系统的秒(0~59)。 4.数据类型转换函数
数据类型转换函数用于将一种类型的数据转换成其他类型的数据。常用的有以下几种:
CStr 函数:将数据转换成一个字符串。例如:
CStr(123.45)= "123.45 "
CInt 函数:将数据转换成一个整数。如果有小数部分则先进行四舍五入。例如:
CInt(123.5)=124
CDate 函数:将数据转换成一个日期。例如:
CDate(123.5)=#1900-5-2 12:00:00#
CBool 函数:将数据转换成一个布尔值。例如:
CBool(123)=True
CLng 函数:将数据转换成一个长整型数。如果有小数部分,则先进行四舍五入。例如:
CLng(123456.51)=123457
CSng 函数:将数据转换成一个单精度数。例如:
CSng(12.4556752)=12.45568
CDbl 函数:将数据转换成一个双精度数。例如:
CDbl(12345.4556752)=12345.4556752 5.数据类型判别函数
数据类型判别函数用于测试数据的子类型。常用的有以下几种:
IsNull 函数:测试自变量是否是 Null,如果是则返回真,否则返回假。例如,假设执 行语句 x=Null,则
IsNull(x)=True
IsEmpty 函数:测试自变量是否是 Empty,如果是则返回真,否则返回假。例如,如果 用 Dim varTemp 先声明一个变量,然后测试该变量的值,此时变量的值为 Empty,则:
IsEmpty(varTemp)=True
IsNumeric 函数:测试自变量是否是一个数值,如果是则返回真,否则返回假。例如:
IsNumeric(123.45)=True
IsArray 函数:测试自变量是否是一个数组,如果是则返回真,否则返回假。例如,
dim arrStudent(3),则:
IsArray(arrStudent)=True
IsDate 函数:测试自变量是否是一个日期型数据,如果是则返回真,否则返回假。
例如:
IsDate(#5/28/2003#)=True
IsObject 函数:测试自变量是否是一个对象,如果是则返回真,否则返回假。
6.数组处理函数
Lbound 函数:返回数组下界函数,VBScript 中数组的下界都是为 0,一般不常用。
Ubound 函数:返回数组上界函数。