asp中function与Sub的区别
成功志
asp中function与Sub的区别
2011-12-3 ok12
sub和function的区别 




SUB和FUNCTION有什么不同呢,他们的语法应该怎么构成? 

Sub:过程; Function:函数,可以带返回值 

语法: 

Sub SubName(参数1, 参数2,...) 

.... 

End Sub 




Function FunctionName(参数1, 参数2,...) 

... 

FunctionName = 返回值 

End Function 




调用方法: 

Sub直接用 SubName 参数1, 参数2,... 

Function如果不要返回值用 FunctionName 参数1, 参数2,... 

如果要返回值 Result = FunctionName(参数1, 参数2,...) 




语法是这样,这是对的 

Sub SubName(参数1, 参数2,...) 

.... 

End Sub 




Function FunctionName(参数1, 参数2,...) 

... 

FunctionName = 返回值 

End Function 

调用时: 

sub 只能用:  

SubName 参数1, 参数2,... 

函数则: 

变量=FunctionName (参数1, 参数2,...) 

FunctionName 参数1, 参数2,... 

上面均未讲出根本: 

SUB与FUNCTION均可有返回值。所以首先要讲清返回方式:有两种,过程或函数返回,即分配与过程或函数同名的返回变量地址。function分配,但sub不分配。VB用此方式加以区分,VC则用VOID声明不用分配。即如p=aa()若aa()是sub则什么也得不到,还会报错。但函数则会得到数值。其次,参数返回,VB中缺省用地址传参,即能返回。但声明为BYVAL即值传参,则不可返回,所以,不存在灵活性的差别。比如函数function bb(a,b), 调用时可以bb m, n也可以p=bb(m,n). 实际,如果确认不会失败,才能用SUB,否则,必须要用FUNCTION以确认是否成功或取得返回值。所以编程,应少用SUB,少用 SubName 参数1, 参数2,...的调用方式。 







sub是过程不需要返回值,function是函数,需要返回值,如下:  

Function NameOfFunction(parameter1, parameter2) 

'some code 

NameOfFunction = return value 

End Function 

________________________________________________ 

Sub NameOfSubRoutine(parameter1, parameter2) 

'some code... 

End Sub 




除了function有返回一个值的区别外,我发现在ASP中好像没有多大的区别,我把所有的sub写成FUNCTION好像效果一样。




如下为两个具体例子:




<%function test(a,b)

 test = a * b

end function




a = 12

b = 14

c = test(a, b)

'这里的变量c就是函数处理后的结果,也就是 12×14 的值,你可以在程序中继续使用变量c进行其它运算。

%>

 




<%

'ASP的语法不是那么严谨,所以sub可以带参数,并且sub并非必须用call才能调用的。

dim a,b,c

sub test(x, y)

 c = x * y

end sub




a = 12

b = 14




test a, b            '相当于 “call test(a, b)”,在不使用Call时不能带括号

response.write(c)

%>




发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容