欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

asp中sub与function的区别?

有人说 function 好,因为它在解释的过程中是跳过的,而sub不同在解析的过程是要解析的? 是不是? 大虾们!
 
2013-11-28 10:55
正确答案
楼上的那个解释也是忽悠人的。所举的例子,function能写成函数来计算,sub同样也能计算啊。sub和function如果只是当做函数来使用的情况下,它们二者间是没有任何区别的,用哪个都是一样的。以前有人就这个问题打过一个比方,我认为非常的恰当。比如说谈恋爱,有些人只想知道谈恋爱的过程(call sub),而有些人呢既想知道这个过程,还想知道结果,也就是他们有没有结婚(call function)假设谈恋爱的过程由给MM打电话、陪MM逛街、给MM送礼物等动作组成那么sub 谈恋爱()和function 谈恋爱()有什么区别呢?Sub 谈恋爱()
  给MM打电话
  陪MM逛街
  给MM送礼物
End Sub
Function 谈恋爱()
  给MM打电话
  陪MM逛街
  给MM送礼物
  If (mm愿意和他结婚) Then
       谈恋爱 = 成功
  Else
    谈恋爱 = 失败
  End If
End Function在调用的时候,它们也是有区别的。由于SUB没有返回值,所以直接 Call 谈恋爱()就可以了。而function有返回值,所以可以把它的返回值赋给变量dim strstr = 谈恋爱() 同时由于function有返回值,所以它在必要的情况下也可以直接进行运算,而sub是不能的。
来自 http://zhidao.baidu.com/link?url=BaR10QTo4R-6AI70wItDpya07TebKrnbDwi1m812qH49qQ_sXTKFRiHUMynbol3pcZB...

asp中sub与function的区别?

2010-01-04 09:44接过拉登叔的枪  分类:其他编程语言 | 浏览 2727 次
 asp服务器
最大的区别就是function可以有返回值。

但是返回值的作用是什么呢?麻烦举例说明。

万分感谢
 
2010-01-04 10:42
正确答案
返回值可以给其它变量赋值,比如有这么一个函数:

function test(a,b)
 test = a * b
end function

a = 12
b = 14
c = test(a, b)

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

PS: TO喜庆旺宝
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)
%>

来自 http://zhidao.baidu.com/link?url=t3Hr6nlMqNtyGgiR_X94D2TBxwdmfOH-EjMwck28r-LG-On5O1EJzM0oESTXEK9f7GMtTlOCFg_CJDFjIuxnla

ASP中Sub和Function的区别说明

作者: 字体:[增加 减小] 类型:转载
主要的区别是有返回值,一般sub是用来调用大量的内容的时候用sub,对于需要计算并需要返回值的时候用function,多用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好像效果一样。 

sub无返回值 
调用sub 可call sub 
调用function 可 <%=function%> 
通常可以用function代替一切,除了一些一定要用sub的——例如事件的触发要是(private sub xxx_OnYYY)。用function的好处是又返回值,对于你认为用sub就行的,用function的返回值就是用来告诉你程序是否有出错的。一般来说返回0表示成功,其他数值就是错误代。

来自 http://www.jb51.net/article/25904.htm
普通分类: