将脚本分割成函数（函数对象）

当你有一个脚本变得很长或很复杂时，将其分割成几个独立的函数是个好办法，函数是一群语句的集合，你可以调用多次同一个函数，你也可以传递参数给函数并从函数获得返回值。

对于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？”。