创建子例程

如果你发现你需要在脚本中的多处地方执行同样的一组语句,可以使用子例程。一个子例程可以包含VBscript语句的任何集合。你可以调用同一个子例程任意多次。这里有一个例子:

<HTML>

<HEAD><TITLE>Subroutine Example</TITLE></HEAD>

<BODY>

<%

SUB ShowSentence

%>

This sentence was created by a subroutine.

<%

END SUB

ShowSentence

ShowSentence

ShowSentence

%>

</BODY>

</HTML>

如果在浏览器中显示这个文件,句子This sentence was created by a subroutine.将会被显示三次。子例程ShowSentence用于显示这个句子,通过该子例程的名字,该子例程在主脚本中被调用了三次。

子例程可以接受参数。例如,你可以创建一个子例程,根据传递给它的参数的不同而显示不同的句子。这里有一个例子:

<%

SUB ShowError(theError)

%>

<TITLE>Login Invalid</TITLE>

<BR>The login information you provided was invalid:

<BR><%=theError%>

<%

END SUB

IF user_name<>Andrew Jones THEN ShowError Bad user name.

IF user_password<>secret password THEN ShowError Bad password

%>

在这个例子中,根据传递给它的字符串的不同,子例程显示不同的错误信息。例如,如果变量user_name的值不等于Andrew Jones,则用字符串Bad user name调用该子例程。如果变量user_password的值不等于secret password,则字符串Bad password被传递给该子例程。

你可以一次给一个子例程传递多个参数。要做到这一点,只要简单地用逗号把参数隔开即可,如下例所示:

<TITLE>Subroutine Example</TITLE>

<%

Sub MySub(myvar1,myvar2)

mystring=myvar1&myvar2

%>

<%=mystring%>

<%

END SUB

MySub The house ,is on a hill.

%>

如果在一个子例程中声明或第一次使用一个变量,则该变量只在这个子例程内存在。这意味着如果你在子例程内给该变量分配了任何值,你将不能在该子例程外读取到这些值。考虑如下的例子:

<TITLE>Subroutine Example</TITLE>

<%

SUB AssignVar

myvar=Hello There!

END SUB

AssignVar

%>

<%=myvar%>

在这个例子中,在子例程内给变量myvar分配了值Hello There!。在该子例程的范围之外,试图显示这个变量的值,但什么也不能显示。

另一方面,如果在一个子例程的外部声明或第一次使用了一个变量(在脚本的层次),该变量可以在子例程之内被访问。考虑如下的例子:

<TITLE>Subroutine Example</TITLE>

<%

SUB ShowVar

%>

<%=myvar%>

<%

END SUB

myvar=Hello There!

ShowVar

%>

在这个例子中,在主脚本中给变量myvar分配了值Hello There!。当子例程ShowVar被调用时,该变量的值被显示。