犯的一个关于ASP变量 sub function传参 的低级错误
成功志
犯的一个关于ASP变量 sub function传参 的低级错误
2011-12-5 ok12
如题:犯的一个关于ASP变量 sub function传参 的低级错误

1、正确调用

   currentpage = request("page")

   Call subName(totalrec,2,currentpage,n,rowcount,rs)




2、错误调用   

   Call subName(totalrec,2,request("page"),n,rowcount,rs)




sub subName(totalrec,msg_per_page,currentpage,n,rowcount,rs)'第2种是错误的,currentpage 只在sub有效

...

end sub







ASP变量作用域

变量的作用域即生命期,决定哪些脚本命令可访问变量。在过程内部声明的变量具有局部作用域。每执行一次过程,变量就被创建然后消亡。而过程外部的任何命令都不能访问它。在过程外部声明的变量具有全局作用域,其值能被 ASP 页上的任何脚本命令访问和修改。

声明变量时,局部变量和全局变量可以有相同的名称。而改变其中一个的值并不会改变另一个的值。如果没有声明变量,则可能不小心会改变一个全局变量的值。例如,以下脚本命令返回值 1,虽然有两个名为 Y 变量:

<% 

Dim Y

Y = 1

Call SetLocalVariable

Response.Write Y




Sub SetLocalVariable

  Dim Y

  Y = 2

End Sub

%>

由于变量没有显式声明,以下的脚本命令将返回 2。当过程调用将 Y 设置为 2 时,脚本引擎认为该过程是要修改全局变量:

<% 

Y = 1

Call SetLocalVariable

Response.Write Y




Sub SetLocalVariable

  Y = 2

End Sub

%>

养成显式声明所有变量的编程习惯可以避免许多问题。尤其在当您用 #include 语句将文件包含进 ASP 主页时,就显得更为重要。一个独立文件中被包含的脚本是被当作整个包含它的文件的一部分来处理的。用不同的名称来命名主脚本和被包含脚本中用到的变量,这容易被遗忘,除非声明变量。 



发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容