有没有办法UnDim变量?

时间:2014-01-26 08:18:23

标签: vbscript asp-classic

我只是想知道是否有可能取消调整变量。

想象一下,这是我在ASP页面中使用的#include文件

Dim MyVar
MyVar = "Hello World"
Response.write(MyVar)
'From now on I can not use Dim MyVar anymore as it throws an error
'I have tried
MyVar = Nothing
Set MyVar = Nothing
'But again, when you do
Dim MyVar
'It throws an error.

原因是我不能每页多次使用相同的#INCLUDE文件。是的,我喜欢使用Option Explicit,因为它可以帮助我保持代码清洁。

*)编辑:我发现它并不像我想的那么清晰。

想象一下,这是一个“include.asp”

<%
Dim A
A=1
Response.Cookie("beer")=A
%>

现在是asp页面:

<!--#include file="include.asp"-->
<%
'Now: I do not see whats in include above and I want to use variable A
Dim A
'And I get an error
'I also cannot use the same include again:
%>
<!--#include file="include.asp"-->

你明白我的意思吗?如果我能够在Include结尾处删除A变量,问题就会解决。

2 个答案:

答案 0 :(得分:6)

没有办法“UnDim”变量。幸运的是,你也不需要那个。

每当您尝试在同一范围内声明两次变量时,您就已经犯了错误。认为运行时不允许你这样做很有帮助。

解决方案:

  • 不使用全局变量。使用函数,在那里声明变量。
  • 不要多次包含同一个文件。

答案 1 :(得分:1)

我同意Tomalak - 我真的不确定你为什么需要(或想要)两次包含同一个文件(?)

它似乎是一个糟糕的设计哲学,最好将include文件中的例程封装为可以调用的函数或子例程 - 不需要包含两次。

此外,虽然你不能解开,但你可以重新开始,但我不想鼓励不良做法,考虑到你似乎想要做的事情。

你可以使用这样的东西而不是所有:

Include.asp:

 <%
 Function SetCookie(scVar, scVal)
     Response.cookie (scVar) = scVal
 End Function
 %>

asp页面:

 <!--#include file="include.asp"-->
<%
Dim A
A=1
SetCookie "Beer", A

A=1 ' This is kind of redundant in this code.

SetCookie "Beer", A
%>

但是如果你确实想要使用全局变量,并坚持使用两次,那么你可以通过为globals添加另一个include来实现这一点。

Globals.asp:

 <%
 Dim globalVarA
 ...other global stuff here....
 %>

Include.asp:

<%
globalVarA=1
Response.Cookie("beer")=globalVarA
%>

现在是asp页面:

<!--#include file="globals.asp"-->
<!--#include file="include.asp"-->
<%
Dim A
A=....something......
%>
<!--#include file="include.asp"-->