将脚本分割成函数(函数对象)
当你有一个脚本变得很长或很复杂时,将其分割成几个独立的函数是个好办法,函数是一群语句的集合,你可以调用多次同一个函数,你也可以传递参数给函数并从函数获得返回值。
对于JScript这样的面向对象语言,函数实际上也是对象,虽然函数是对象,但它们工作起来就象VBScript的过程和函数一样(JScript中设有过程),你可以象下面所示那样明确地建立一个新函数:
<%
myfunc=new Function(“myvar”,“myvar2”,“return myvar-myvar2”);
%>
这个脚本创建了一个名为myfun()的函数,它接收两个名为myvar和 myvar2的参数,并将一个参数与另一个进行相减。建立了这个函数以后,你可以象下面这样输出函数的值:
<%=myfunc(3,1)%>
在此例中,值3和1被传给了函数,并从函数获得返回值2。
然而你并不需要用这种方法来明确地建立一个函数对象,你也可用下面的方法来建立一个对象。这与你用别的编程语句建立函数是一样的,如下所示:
<%
function myfunc(myvar,myvar2)
{
return myvar-myvar2;
}
%>
这个脚本建立了一个与上面那个例子中一样的函数,它有两个名为myvar和 myvar2的参数,函数通过return语句返回两个参数和差值。
注意使用了花括号({})来指明函数体,JScript使用括号来将一群语句集中起来,函数体中可包含多条语句。来看下面的例子:
<%
function emphasize(thestring)
{
thestring=thestring.bold();
thestring=thestring.italics();
thestring=thestring.big();
return thestring;
}
%>
<%=emphasize(“This is important!”)%>
在此例中,建立了一个函数emphasize(),它接收一个字符串参数,它以黑体、斜体及大字体返回任何传给它的字符串。
一个函数可以没有返回值,也可以没有任何参数。下面的脚本与上面这个输出相同的结果:
<%
function emphasize()
{
thestring=“This is important!”;
thestring=thestring.bold();
thestring=thestring.italics();
thestring=thestring.big();
%>
<%=thestring%>
<%
}
%>
<%=emphasize()%>
在此例中,与前一个脚本不同,字符串变量的值在函数体中给出,这个函数总是返回字符串“This is important!”,它总是完成同一功能。使用参数和返回值的一个主要的好处,就是它使得函数更具灵活性,因而就更有用。
注意名为thestring的字符串变量在此例中是怎样使用的。变量thestring首先在函数中被赋值。由于这个原因,你可能认为这个变量在函数范围之外是不存在的。然而在此例中,变量thestring实际上在整个脚本中都是存在的.
要建立一个特定函数的局部变量,你需要在函数体中明确申明它。你可用var语句来实现这一点。来看下面这个脚本中的两个变量:
<%
function greet()
{
myvar=“Hello!”;
var myvar2=“How are you?”;
return myvar+myvar2;
}
myvar2=“Goodbye!”;
%>
<%=greet()%>
<%=myvar2%>
当执行这个脚本时,字符串“Hello!How are you?Goodbye!”被显示在浏览器上。注意,名为myvar2变量被赋于了不同的值。这个脚本中实际上存在两个同名的变量。函数中申明的变量myvar2只存在于函数之中。对这个变量赋值不会影响到函数之外的变量myvar2。这就是为什么在最后一句语句中,脚本输出的是“Goodbye!”而不是“How are you?”。