过程 sub 与 function 的区别

tongdou520 2003-08-21 12:16:18
请问,书里说的,sub 没有返回值,function 有返回值。 返回值是什么意思呢? 举个例子可以吗 。/》/?
...全文
114 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ceocio 2003-08-21
  • 打赏
  • 举报
回复
就是说你调用function函数的时候可以带几个参数过去运算。然后返回值
xupiao 2003-08-21
  • 打赏
  • 举报
回复
至少
在asp中
过程的功能可以用函数来完成
有什麼區別你應該知道了
eddiezhen 2003-08-21
  • 打赏
  • 举报
回复
过程的功能可以用函数来完成,函数只是可以有值返回给被调用者,而在C++语言里没有这种区分,多称作函数。c语言没有delphi和vb里面那么清楚
.
babystudio 2003-08-21
  • 打赏
  • 举报
回复
既然楼主关注返回值...

Example:
<%
function hello()
hello="world"
end function

response.write hello()
%>
对于没有返回值的function ,需要这样调用
call funcName()
有返回值的
tt=funcName() '前面的hello()例子实际上是把hello()的返回值作为一个参数传递给write()方法,已经隐性的调用tt=funcName()
chinesun 2003-08-21
  • 打赏
  • 举报
回复
Function 语句
请参阅
Call 语句 | Dim 语句 | Exit 语句 | Nothing | Set 语句 | Sub 语句
要求
版本 1
声明 Function 过程的名称、参数以及构成其主体的代码。

[Public [Default]| Private] Function name [(
arglist
)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
chinesun 2003-08-21
  • 打赏
  • 举报
回复
Sub 语句
请参阅
Call 语句 | Dim 语句 | Exit 语句 | Function 语句
要求
版本 1
声明 Sub 过程的名称、参数以及构成其主体的代码。

[Public [Default] | Private] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
参数
Public
表示 Sub 过程可被所有脚本中的所有其他过程访问。
Default
只与 类块中的Public 关键字连用,用来表示 Sub 过程是类的默认方法。如果在类中指定了不止一个Default过程,就会出错。
Private
表示 Sub 过程只可被声明该过程的脚本中的其他过程访问。
name
Sub 的名称,遵循标准变量命名规则。
arglist
代表在调用时要传递给 Sub 过程的参数的变量列表。用逗号隔开多个变量。
statements
在 Sub 过程主体内所执行的任何语句组。
arglist 参数包含下列语法和部分:

[ByVal | ByRef] varname[( )]
参数
ByVal
表示该参数是按值传递的。
ByRef
表示该参数按引用传递。
varname
代表参数的变量名称,遵循标准变量命名规则。
说明
如没有显式地指定使用 Public 或 Private,则 Sub 过程默认为公用,即它们对于脚本中的所有其他过程都是可见的。Sub 过程中局部变量的值在调用过程中不被保留。

不能在任何其他过程(例如,Function 或 Property Get)中定义 Sub 过程。

使用 Exit Sub 语句可以立即从 Sub 过程中退出。程序继续执行调用 Sub 过程的语句之后的语句。可以在 Sub 过程中任意位置出现任意个 Exit Sub 语句。

与 Function 过程相似之处是:Sub 过程是一个可以获取参数,执行一系列语句以及可改变其参数的值的独立过程。而与 Function 过程不同之处是:Function 过程可以返回值,而 Sub 过程不能用于表达式中。

可以使用过程名并跟随相应的参数列表来调用 Sub 过程。关于如何调用 Sub 过程的详细说明信息,请参阅 Call 语句。

警告 Sub 过程可以是递归的,即该过程可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出。
在 Sub 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用 Dim 或等效方法)总是局部变量。对于那些没有在过程中显式声明的变量也是局部的,除非在该过程外更高级别的位置显式地声明它们。

警告 过程可以使用没有在过程内显式声明的变量,但只要有任何 script 级定义的名称与之同名,就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是脚本级的名称。要避免这类冲突,请使用 Option Explicit 语句可强制显式声明变量。
chinesun 2003-08-21
  • 打赏
  • 举报
回复
Function:
参数
Public
表示 Function 过程可被所有脚本中的所有其他过程访问。
Default
只与 Class 块中的 Public 关键字一起使用来表示 Function 过程是类的默认方法。如果在一个类中指定了不止一个 Default 过程,就有错误发生。
Private
表示 Function 过程只可被声明它的脚本中的其他过程访问或者如果函数是一个数据类,那么 Function 过程只能被该类中的其他过程访问。
name
Function 的名称,遵循标准的变量命名规则。
arglist
代表调用时要传递给 Function 过程的参数的变量列表。用逗号隔开多个变量。
statements
在 Function 过程的主体中执行的任意语句组。
expression
Function 的返回值。
arglist 参数包含下列语法和部分:

[ByVal | ByRef] varname[( )]

参数
ByVal
表示该参数是按值方式传递的。
ByRef
表示该参数按引用方式传递。
varname
代表参数变量的名称;遵循标准的变量命名规则。
说明
如没有显式指定使用 Public 或 Private,则 Function 过程默认为公用,即它们对于脚本中的所有其他过程是可见的。Function 中局部变量的值在对过程的调用中不被保留。

不能在任何其他过程(例如,Sub 或 Property Get)中定义 Function 过程。

使用 Exit Function 语句可以从 Function 过程中立即退出。程序继续执行调用 Function 过程的语句之后的语句。可在 Function 过程的任何位置出现任意个 Exit Function 语句。

与 Sub 过程类似,Function 过程是可以获取参数、执行一系列语句并改变其参数值的独立过程。与 Sub 过程的不同之处是:当要使用由函数返回的值时,可以在表达式的右边使用 Function 过程,这与内部函数的使用方式一样,例如 Sqr、Cos 或 Chr。

在表达式中,可以通过使用函数名,并在其后用圆括号给出相应的参数列表来调用 Function 过程。有关调用 Function 过程的详细信息,请参阅 Call 语句。

警告 Function 过程可以是递归的,即该过程可以调用自身以完成某个给定的任务。但是,递归可能会导致堆栈溢出。
要从函数返回一个值,只需将值赋给函数名。在过程的任意位置都可以出现任意个这样的赋值。如果没有给 name 赋值, 则过程将返回一个默认值:数值函数返回 0,字符串函数返回零长度字符串 ("")。如果在 Function 中没有对象引用被指定给 name(使用 Set),则返回对象引用的函数将返回 Nothing。

下面的样例说明如何给一个名为 BinarySearch 的函数赋返回值。在此样例中,将 False 赋给了该函数名,表示没有找到某个值。

Function BinarySearch(. . .)
. . .
' 未找到该值。返回 False 值。
If lower > upper Then
BinarySearch = False
Exit Function
End If
. . .
End Function
在 Function 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用 Dim 或等效方法)总是过程的局部变量。被使用但没有在过程中显式声明的变量也是局部变量,除非在该过程外更高级别的位置显式声明它们。

警告 过程可以使用没有在过程内显式声明的变量,但只要有任何 script 级定义的名称与之同名,就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是脚本级的名称。要避免这类冲突,请使用 Option Explicit 语句可强制显式声明变量。
警告 VBScript 可能会重新排列数学表达式以提高内部效率。当 Function 过程修改数学表达式中变量的值时,应避免在同一表达式中使用该函数。
chjpeng 2003-08-21
  • 打赏
  • 举报
回复
返回值就是經function處理后的結果
chon81 2003-08-21
  • 打赏
  • 举报
回复
function是可以返回值的.
fleshboy 2003-08-21
  • 打赏
  • 举报
回复
不知道什么是返回值?
fleshboy 2003-08-21
  • 打赏
  • 举报
回复
function 也可以不带返回值
fleshboy 2003-08-21
  • 打赏
  • 举报
回复
sub 不带返回值
function 带返回值
muders 2003-08-21
  • 打赏
  • 举报
回复
function 可以这样用:
...
Dim a
a=F1(x1,x2...)
...
function F1(P1,P2...)
.
.
.
end function


sub只能是
...
S(x1,x2...)
...
sub S(P1,P2...)
.
.
.
end sub

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧