第 4 章 子程序与函数
学习导航
- 子程序
- 函数
4.1 子程序 (Subroutines)
什么是子程序?
“子程序”是将一段具有某种特定功能的语句区块单句撰写成一个独立的程序,给予特定的名称,它的格式如下:
sub 子程序名称 [(参数1,参数2,.. .)]
程序代码
end sub
子程序一定要有名称,调用子程序时就会使用到它的名称。如果没有调用它,子程序并不会执行,请看下面范例。
<script language="vbs"> msgbox "我在外面" sub A msgbox "我在里面" end sub </script>
<script language="vbs"> msgbox "我在外面" A sub A msgbox "我在里面" end sub </script>
4.2 调用子程序名称 [(参数1,参数2,...)]
方法一:call 子程序名称 参数1,参数2
方法二:子程序名称 参数1,参数2。。。
<script language="vbs"> sub chang(c) degree=c*1.8+32 msgbox "摄氏" & c & "度转换为华氏" & degree & "度" end sub degreec=inputbox("请输入摄氏度:") chang degreec </script>
<script language="vbs"> msgbox "我在外面" A msgbox "我在后面" sub A msgbox "我在里面" end sub </script>
4.3 局部变量和全局变量
<script language="vbs"> A msgbox "i等于" & i sub A i=10 end sub </script>
为什么这里弹出的信息框I的值为空呢,因为子程序里面的I变量是局部变量,到子程序外面已经超出了变量I的有效范围,所以到了子程序之外后变量“I”失效了。
<script language="vbs"> dim i A msgbox "i等于" & i sub A i=10 end sub </script>
这个程序在子程序之外先用“DIM I”对变量“I”进行声明,这时变量“I”就会变成了“全局变量”,所谓的全局变量就是指不管在程序的哪一部分,包括子程序之内,这个变量都有效果。一般变量只要在子程序之外先声明或是先出现就会变成全局变量,反之就是局部变量。所以只要跳出该程序,那么局部变量就会失效。
4.4 终止执行子程序
一般子程序执行到 end sub 就会结束,但也可以提早结束子程序,而直接跳回原来调用子程序的地方。
<script language="vbs"> A sub A I=10 exit sub msgbox "我不会执行到" end sub </script>
在程序中直接使用“Exit sub”来跳出子程序,所以 msgbox “…”不会执行到。
4.5 事件驱动
在VBScript中,子程序不仅扮演执行重复动作的角色,还可以侦测到用户对浏览器所做的操作。
格式:
sub 对象_操作
所要响应的程序代码
end sub
<script language="vbs"> sub document_onclick msgbox "您按到我了!" end sub </script>
在这个例子中,我们点击了页面单击鼠标时,就会驱动document_onclick这个子程序,而出现一个对话框。“对象”_”事件”中间要以下滑线隔开。
4.6 函数(Functions)
在写程序时,常常遇到一些相同的代码。那么我们经常会用调用的方法去处理。而函数的结构及用法与子程序几乎相同,唯一不同的是函数可以在执行结束的时候返回一个值,而子程序不会。函数是以“Function”开始,”End Function”结束。
格式:function 函数名称 [(参数1,参数2. . .)]
程序代码
函数名称=程序代码
end function
<script language="vbs"> function circle(n) circle=n*n*3.14 end function msgbox "半径为10的圆面积为" & circle(10) </script>
<script language="vbs"> function sum(n) total=0 for I=1 to n total=total+I next sum=total end function number=InputBox("请输入一个整数:") mysum=sum(number) msgbox "1加到" & number & "的总和为" & mysum </script>
函数不仅能够传入一个参数,您也可以根据实际需求而传入多个参数。
<script language="vbs"> function sum(n,s) total=0 for I=s to n total=total+I next sum=total end function start=inputbox("请输入初始值:") number=inputbox("请输入一个整数") mysum=sum(number,start) msgbox start & "加到" & number & "的总和为" & mysum </script>