- 时间:2021-03-14 02:25 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:VBS教程:VBscript语句-Function 语句
Function 语句
声明 [b]Function[/b] 过程的名称、参数以及构成其主体的代码。
[code] [Public [Default]| Private] [b]Function[/b] name [(
arglist
)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
[b]End Function[/b] [/code]
[h3]参数[/h3]Public
表示 [b]Function[/b] 过程可被所有脚本中的所有其他过程访问。
Default
只与 [b]Class[/b] 块中的 [b]Public[/b] 关键字一起使用 来表示 [b]Function[/b] 过程是类的默认方法。如果在一个类中指定了不止一个 [b]Default[/b] 过程,就有错误发生。
Private
表示 [b]Function[/b] 过程只可被声明它的脚本中的其他过程访问或者如果函数是一个数据类,那么 [b]Function[/b] 过程只能被该类中的其他过程访问。
name
[b]Function[/b] 的名称,遵循标准的变量命名约定。
arglist
代表调用时要传递给 [b]Function[/b] 过程的参数的变量列表。用逗号隔开多个变量。
statements
在 [b]Function[/b] 过程的主体中执行的任意语句组。
expression
Function 的返回值。
[b]arglist[/b] 参数包含下列语法和部分:
[ByVal | ByRef] varname[( )]
[h3]参数[/h3]ByVal
表示该参数是按值方式传递的。
ByRef
表示该参数按引用方式传递。
varname
代表参数变量的名称;遵循标准的变量命名约定。
[h3]说明[/h3]如没有显式指定使用 Public或 Private,则 [b]Function[/b] 过程默认为公用,即它们对于脚本中的所有其他过程是可见的。[b]Function[/b] 中局部变量的值在对 过程的调用中不被保留。
不能在任何其他过程(例如,[b]Sub[/b] 或 [b]Property Get[/b])中定义 [b]Function[/b] 过程。
使用 [b]Exit Function [/b]语句可以从 [b]Function[/b] 过程中立即退出。程序继续执行调用 [b]Function[/b] 过程的语句之后的语句。可在 [b]Function[/b] 过程的任何位置出现任意个 [b]Exit Function[/b] 语句。
与 [b]Sub[/b] 过程类似,[b]Function[/b] 过程是可以获取参数、执行一系列语句并改变其参数值的独立过程。与 [b]Sub[/b] 过程的不同之处是:当要使用由函数返回的值时,可以在 表达式的右边使用 [b]Function[/b] 过程,这与内部函数的使用方式一样,例如 [b]Sqr[/b]、[b]Cos[/b] 或 [b]Chr[/b]。
在表达式中,可以通过使用函数名,并在其后用圆括号给出相应的参数列表来调用 [b]Function[/b] 过程。有关调用 [b]Function[/b] 过程的详细信息,请参阅 [b]Call[/b] 语句。
[b]小心[/b] [b]Function[/b] 过程可以是递归的,即该过程可以调用自身以完成某个给定的任务。但是,递归可能会导致堆栈溢出。
要从函数返回一个值,只需将值赋给函数名。在过程的任意位置都可以出现任意个这样的赋值。如果没有给 [b]name[/b] 赋值, 则过程将返回一个默认值:数值函数返回 0,字符串函数返回零长度字符串 ("")。如果在 [b]Function[/b] 中没有对象引用被指定给 [b]name[/b](使用 [b]Set[/b]),则返回对象引用的函数将返回 Nothing。
下面的样例说明如何给一个名为 BinarySearch 的函数赋返回值。在此样例中,将 [b]False[/b] 赋给了该函数名,表示没有找到某个值。
[code][b]Function[/b] BinarySearch(. . .) . . . ' [/code]未找到该值。返回[code] False [/code]值。[code] If lower > upper Then[/code][code] BinarySearch = False [/code][code] Exit Function [/code][code] End If[/code][code] . . .[/code][code]End Function[/code]
在 [b]Function[/b] 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用 [b]Dim[/b] 或等效方法)总是过程的局部变量。被使用但没有在过程中显式声明的变量也是局部变量,除非在该过程外更高级别的位置显式声明它们。
[b]小心[/b] [b]Function[/b] 过程可以是递归的,即该过程可以调用自身以完成某个给定的任务。但是,递归可能会导致堆栈溢出。
[b]小心[/b] VBScript 可能会重新排列数学表达式以提高内部效率。当 [b]Function[/b] 过程修改数学表达式中变量的值时,应避免在同一表达式中使用该函数。