vbs(asp)下的Function 语句

2018-09-06 11:37

阅读:418

  Function语句
声明Function过程的名称、参数以及构成其主体的代码。

[Public[Default]Private]Functionname[(
arglist
)]
[statements]
[name=expression]
[ExitFunction]
[statements]
[name=expression]
EndFunction参数
Public
表示Function过程可被所有脚本中的所有其他过程访问。
Default
只与Class块中的Public关键字一起使用来表示Function过程是类的默认方法。如果在一个类中指定了不止一个Default过程,就有错误发生。
Private
表示Function过程只可被声明它的脚本中的其他过程访问或者如果函数是一个数据类,那么Function过程只能被该类中的其他过程访问。
name
Function的名称,遵循标准的变量命名规则。
arglist
代表调用时要传递给Function过程的参数的变量列表。用逗号隔开多个变量。
statements
在Function过程的主体中执行的任意语句组。
expression
Function的返回值。
arglist参数包含下列语法和部分:

[ByValByRef]varname[()]

参数
ByVal
表示该参数是按值方式传递的。
ByRef
表示该参数按引用方式传递。
varname
代表参数变量的名称;遵循标准的变量命名规则。
说明
如没有显式指定使用Public或Private,则Function过程默认为公用,即它们对于脚本中的所有其他过程是可见的。Function中局部变量的值在对过程的调用中不被保留。

不能在任何其他过程(例如,Sub或PropertyGet)中定义Function过程。

使用ExitFunction语句可以从Function过程中立即退出。程序继续执行调用Function过程的语句之后的语句。可在Function过程的任何位置出现任意个ExitFunction语句。

与Sub过程类似,Function过程是可以获取参数、执行一系列语句并改变其参数值的独立过程。与Sub过程的不同之处是:当要使用由函数返回的值时,可以在表达式的右边使用Function过程,这与内部函数的使用方式一样,例如Sqr、Cos或Chr。

在表达式中,可以通过使用函数名,并在其后用圆括号给出相应的参数列表来调用Function过程。有关调用Function过程的详细信息,请参阅Call语句。

警告Function过程可以是递归的,即该过程可以调用自身以完成某个给定的任务。但是,递归可能会导致堆栈溢出。
要从函数返回一个值,只需将值赋给函数名。在过程的任意位置都可以出现任意个这样的赋值。如果没有给name赋值,则过程将返回一个默认值:数值函数返回0,字符串函数返回零长度字符串()。如果在Function中没有对象引用被指定给name(使用Set),则返回对象引用的函数将返回Nothing。

下面的样例说明如何给一个名为BinarySearch的函数赋返回值。在此样例中,将False赋给了该函数名,表示没有找到某个值。

FunctionBinarySearch(...)
...
未找到该值。返回False值。
Iflower>upperThen
BinarySearch=False
ExitFunction
EndIf
...
EndFunction在Function过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用Dim或等效方法)总是过程的局部变量。被使用但没有在过程中显式声明的变量也是局部变量,除非在该过程外更高级别的位置显式声明它们。

警告过程可以使用没有在过程内显式声明的变量,但只要有任何script级定义的名称与之同名,就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是脚本级的名称。要避免这类冲突,请使用OptionExplicit语句可强制显式声明变量。
警告VBScript可能会重新排列数学表达式以提高内部效率。当Function过程修改数学表达式中变量的值时,应避免在同一表达式中使用该函数。


评论


亲,登录后才可以留言!