赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 编程语言

常用的编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN


首页 > 专业技术 > 编程语言 > VBScript的过程与函数
VBScript的过程与函数
一、VBScript的过程:

通过定义过程和函数来完成特定的功能,根据是否有返回值,分为Sub(子过程)和Function(函数)。使用Sub和Function创建过程和函数时,名称后面必须紧跟括号,括号中包含所有参数,参数间用逗号分开。参数是传递数据的占位符。

Sub过程是包含在Sub和End Sub语句之间的一组VBScript语句,被调用执行后没有返回值。Sub过程可以使用参数,如果无参数,必须包含空括号。

1. Sub过程声明:

声明Sub过程,必须指明过程的名称、是否带有参数,以及构成其主体的代码。语法如下:

[Public [Default]|Private] Sub 过程名称[(参数列表)]

  [语句]

  [Exit Sub]

  [语句]

End Sub

其中Public关键字表示Sub过程可以被所以脚本中的所有其他过程访问,Default关键字只能够与类中的Public关键字连用,用来表示Sub过程是类的默认方法。在一个类中,用户只能指定一个Default过程。Private关键字表示Sub过程只能够被声明该过程的脚本中的其他过程访问。

参数列表代表在调用时要传递给Sub的变量列表,用逗号隔开多个变量。参数可以包含下列语法和部分:

  [ByVal}ByRef]varname[()]

其中,ByVal关键字表示该参数是按值传递的,ByRef关键字表示该参数按引用传递的,varname表示参数的变量名。

所谓按值传递,就是允许过程访问变量的一个副本,但是不能更改变量的实际值;所谓引用传递,就是参数向过程传递的是变量的地址,如果在过程中更改参数变量的值,则原变量的值也随之发生变化。

2. Sub使用技巧:

Sub过程是一个可以获取参数、执行一系列语句以及可改变其参数的值的独立过程。Sub过程没有返回值,所以不能用于表达式中。

如没有显式使用Public或Private关键字,则Sub过程默认为公用的,即对脚本中的所有过程都有效。Sub中局部变量的值在调用过程中不被保留。不能在任何其他过程或函数中定义Sub过程。

用户可以使用Exit Sub语句强制程序从Sub过程中退出,然后继续执行调用Sub过程的语句之后的语句。可以在Sub过程中任意位置使用任意多个Exit Sub语句。

Sub过程是可以递归的,即可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出,使用时一定要结合Exit Sub语句强制终止Sub过程无限递归。

Sub中使用的变量可以分为两类:

·过程中显式声明的变量,这些都是局部变量,一般用Dim语句或其他等效的方法声明。

·过程中没有显式声明的变量,默认为局部变量,除非在过程外显式声明了。

过程中可以使用没有在过程中显式声明的变量,但只要有任何脚本级定义的名称与之同名,就会产生冲突。如果过程中引用的未声明变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是脚本级的变量。

为了避免局部变量与脚本变量名称发生冲突,用户可以使用Option Explicit语句强制显式声明变量。

3. 调用Sub过程:

调用Sub过程有两种方法:

·使用Call语句

·直接引用Sub过程名

调用Sub过程时,调用语句必须是一个独立的语句,语法如下:

Call Sub 过程名([参数列表])

使用Call语句时,必须将所有参数包含在括号中。

直接使用Sub过程名的语法如下:

Sub 过程名 [参数列表]

直接调用Sub过程时,Sub过程名与后面的参数列表之间要用空格隔开,不能使用小括号。

二、VBScript的函数:

Function是包含在Function和End Function语句之间的一组语句,Function可以返回值,也可以使用参数,如果无任何参数,则Function语句必须包含空括号。

1. Function的基本用法:

声明Function需要指定函数名称、参数以及构成其主体的代码。语法格式如下:

[Public [Default]|Private] Function name [(参数列表)]

[语句]

[name=expression]

[Exit Function]

[语句]

[name=expression]

End Function

其中,Public关键字表示Function可被所以脚本中的其他过程访问,Default关键字只能够与类中的Public关键字连用,用来表示Function是类的默认方法。在一个类中,用户只能指定一个Default过程。Private关键字表示Function只能够被声明它的脚本中的其他过程访问。Name表示Function的名称,expression表示Function的返回值。示例:

<script type=”text/vbscript”>

Public function toCharArray(byVal str)

  redim charArray(len(str))

  for i=1 to len(str)

    charArray(i-1)=Mid(str,i,1)

  Next

  toCharArray=CharArray

End Function

Dim a

a=toCharArray(“abcdefg”)

Msgbox a(2)

</script>

示例中,先定义了一个公共函数,该函数能够把传递给它的字符串转换成一个数组,字符串中的每个字符为数组的一个元素。最后调用该函数,然后显示字符串则的第3个字符。

2. Function的使用技巧:

如果没有显式指定Public或Private关键字,则Function默认为公用的,即对脚本中的所有过程都有效。Function中局部变量的值在调用过程中不被保留。不能在任何其他过程或函数中定义Function。

可以使用Exit Function语句强制程序从Function中退出,程序继续执行调用Function的语句之后的语句。可以在Function中任意位置使用任意多个Exit Function语句。

Function是可以递归的,即可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出,使用时一定要结合Exit Function语句强制终止无限递归。

Function中使用的变量可以分为两类:

·显式声明的变量,这些都是局部变量,一般用Dim语句或其他等效的方法声明。

·没有显式声明的变量,默认为局部变量,除非在过程外显式声明了。

Function可以获取参数,并可以在表达式的右边使用Function。在表达式中,可以通过使用函数名,并在其后用圆括号给出相应的参数列表来调用Function。

3. Function的返回值:

Function与Sub的最大不同就是能够返回值。要从Function返回值,只需将值赋给函数名,在Function的任意位置都可以出现任意多个这样的赋值。

<script type=”text/vbscript”>

Public function HtmlEncode(str)

  If Trim(str)= =”” Or IsNull(str) then

     HtmlEncode=””

  Else

Str=Replace(str,”>”,”>”)

    Str=Replace(str,”<”,”<”)

    Str=Replace(str,char(32),” ”)

    Str=Replace(str,char(9),” ”)

    Str=Replace(str,char(34),”"”)

    Str=Replace(str,char(39),”'”)

    Str=Replace(str,char(13),””)

    Str=Replace(str,char(10)&char(10),”</p><p>”)

    Str=Replace(str,char(10),”<br>”)

HtmlEncode=str

  End if

End Function

Dim a

a=”<mata http-equiv=’Content-Type’ content=’text/html;charset=gb2312’ />”

a=HtmlEncode(a)

document.write a

</script>

示例中,通过自定义函数将字符串中的HTML代码过滤,以便能在网页中显示HTML源代码,其中使用了VBScript的内置函数。

如果没有给Function名赋值,则Function将返回一个默认值:数值函数返回0,字符串函数返回零长度字符串(“”)。如果Function中没有对象引用被指定给函数名(使用set),则返回对象引用的Function将返回Nothing。

 

 

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659