ASP_为什么少了dim结果完全不一样了?

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:53:10
asp语言
由于以下两个代码,怎么少了 两个 dim x 怎么就显示效果不同了呢??
——————————————————————————————
<html>
<head>
<title>123</title>
</head>
<body>
<%
dim x
x=1
Call SetProcedureVariable
Response.Write X
Sub SetProcedureVariable()
dim x
X = 2
End Sub
%>
</body>
</html>
_____________________________________________________________

<html>
<head>
<title>Example9</title>
</head>
<body>
<%
x=1
Call SetProcedureVariable
Response.Write X
Sub SetProcedureVariable()
X = 2
End Sub
%>
</body>
</html>

第一段的dim x,x=1 以及第二段的 x=1的未声明定义在没有option explicit语句的前提下效果是一样的,都是创建了一个全局变量x。关键在于x在SetProcedureVariable子过程中的定义。第一段SetProcedureVariable子过程你定义的是dim x,X = 2,这时的X就是在SetProcedureVariable子过程新定义为局部变量,只在定义它的过程中有效,而且这个局部变量与刚开始定义的X重名时,全局变量X会暂时失效,此时X的值是2;当SetProcedureVariable子过程执行结束后,局部变量失效,此时X的值重新变回刚开始定义的全局变量X的值1,所以第一段输出的是1;第二段代码在SetProcedureVariable子过程中只写了X=2,因为全局变量的作用域是整个代码,因此此时系统认为这是给全局变量X赋一个新值2,并通过Response对象输出。