ASP 里,具有 Sub 和 Function 这 2 种 vbscript 的过程。。。。
Sub 子例程。。。。主要的作用就是可以把一个作为整体的一段程序打包起来的过程。。。。
Function 函数。。。。除了具备 Sub 的功能外,还有一个更有用的作用就是可以返回在函数中产生的值或对象。。。。
本文主要探讨这 2 个过程在 ASP 里的应用。。。。
在上面的介绍中,相信大家对 Sub 和 Function 有一定了解了。。。。
估计很多朋友会在想,既然 Function 具有 Sub 的功能,那我全用 Function 好了。。。。
呵呵,未尝不可。。。。但是。。。。却有个问题。。。。
在 ASP 的脚本执行机制里。。。。
Sub(以下简称 S )和 Function(以下简称 F )是有区别的。。。。
一个脚本程序(就是一个 ASP 文件)在 IIS 里执行时,
S 是子例程,也就是程序的 子程序 。。。。
而 F 是函数。。。。也就是具备随时被调用或者被传值的功能。。。。
因此,在被执行解析的过程中,这 2 者是有区别的。。。。
S 是在脚本程序被执行,被记录,然后跳过,遇到 Call 调用时,才读取解析,然后执行的。。。。
而 F 却不是,F 是在脚本被执行时,就事先被读取解析,当遇到调用时,执行。。。。
也就是说,
你的脚本里,如果有 1000 个 S ,只要你不 Call 调用,这 1000 个 S 都不会被解析执行。。。。
但,如果有 1000 个 F 。。。。就完全相反了。。。。这 1000 个 F 都会被事先解析,存入内存,等待脚本执行时被调用,直到脚本执行完毕,才释放内存。。。。哪怕你脚本里根本没调用。。。。也一样会被事先解析。。。。
因此。。。。使用 S 和 F 是有区别的。。。。
不能随便用。。。。这将影响到你的 ASP 执行效率。。。。
Sub 多用在一段程序是一个整体,会被多处使用时,把这段程序抽取出来,方便多处调用。。。。
比如,执行一个删除,
我们没必要每次都写一个 Conn.Execute( delete from [表] where id = ) 可以打包到一个 Sub 里。。。。传递一个参数,就执行了。。。。
Function 多用在对 一段会被多处使用 需要执行 对比、判断、或者 返回一个 值 或 对象 的程序 进行打包。。。。
比如,我需要对一个字符串进行特殊处理后得到一个全新的字符串来进行匹配,
A = “A/S/4/SDF/35T/ERF/34/ERF/35/TR/DSG3/3/T4R3G”
我需要判断这个 A 包含的 F 字母是否多于 2 个。。。。
并且可能是需要多处使用到,
那么,我们就可以把这个过程打包。。。。
又基于要得出一个新的 A 进行比对(是否多于 2 个),这时,我们就可以使用函数 Function 来处理了。。。。
复制内容到剪贴板
代码:
Function ChuliA( zifuchuanA )
' 处理 zifuchuanA 的程序……
' 处理 zifuchuanA 的程序……
' 处理 zifuchuanA 的程序……
ChuliA = zifuchuanA ' 处理完后,把 zifuchuanA 这个新值返回。。。。
End Function
调用时,可以 If ChuliA( A ) > 2 Then 直接用了。。。。