ASP全局变量和局部变量的问题

ghf76017414 2008-11-22 01:18:10
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<body>

<%
dim n
function abc(n)
n=n+1
end function
function abcd(c)
c=c+n+1
abcd=c+1
end function
n=5
response.write n & ":" & abc(n) & ":" & abcd(n)
%>
</body>
</html>
结果 5::14
为什么会得到这个结果呢?
...全文
778 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghf76017414 2008-11-24
  • 打赏
  • 举报
回复
太感谢了啊,*^_^*
wangxiaoning868 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 ghf76017414 的帖子:]
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<body>

<%
dim n
function abc(n)
n=n+1
end function
function abcd(c)
c=c+n+1
abcd=c+1
end function
n=5
response.write n & ":" & abc(n) & ":" & abcd(n)
%>
</body>
</html>
结果 5::14
为什么会得到这个结果呢?
[/Quote]
第一个5不用解释吧,定义的n=5
第二个没有值是空,应为 函数 abc(n)没有返回值。但函数体还是执行了一边,n的值会增加1,此时n=6
第三个是14function abcd(c(n=6传过来的))
c=c(6)+n(6)+1‘这里的n是你在函数外定义的
abcd=c(13)+1
end function


toury 2008-11-22
  • 打赏
  • 举报
回复
对于函数参数的传址和传值LZ还需要补一课。你提的问题不是全局/局部变量问题,呵呵

<%
dim n '全局变量
function abc(n)'这样写,默认是传址
n=n+1'传址的结果是当实参在函数里改变后,形参也被改变了(由5变成了6),这很重要
'abc=n 你这里少了返回值,所以下面输出是空
end function
function abcd(c)'这样写,默认是传址
c=c+n+1'由于你先调用了abc函数,n被改变成了6,所以这里的c=6+6+1=13
abcd=c+1'因此这里abcd函数返回的是13+1=14
end function
n=5
response.write n & ":" & abc(n) & ":" & abcd(n)
%>

分析你的想法,你应该用传值来做:

<%
dim n
n=5
response.write n & ":" & abc(n) & ":" & abcd(n)

function abc(byval n)
n=n+1
abc=n
end function

function abcd(byval c)
c=c+n+1
abcd=c+1
end function
%>
不耐烦 2008-11-22
  • 打赏
  • 举报
回复
<% 
dim n
function abc(n)
n=n+1'没有返回值所以下面输出没有结果
end function

function abcd(c)
c=c+n+1
abcd=c+1
end function
n=5
response.write n & ":" & abc(n) & ":" & abcd(n)
'abc(n) 没有返回值所以输出没有结果
'因为输出abc(n)有个过程n=n+1=6在带入abcd(n),abcd(6)
'c=c+n+1
'c=6+6+1=7
'abcd=c+1
'abcd=c+1=6+7+1=14
%>

28,391

社区成员

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

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