首先让我说我是一名 PHP 开发人员,而不是 ASP 开发人员。 (我真的希望 ASP 有 isset()
。)而且我在一个实时环境中工作,所以我真的没有机会做任何测试。
我发现的所有资源都提出了测试变量是否存在的不同方法。
这是我想要做的:
在某些页面上,我设置了一个变量来保存机器人的值 <meta>
标签:
dim dsep_robots
dsep_robots = "nofollow,noindex"
所有页面包含
header.asp
.在我的头文件中,我想测试是否 dsep_robots
有一个值,如果是,则输出该值,否则不输出任何内容。我认为测试是否
dsep_robots
有一个值可能是这样的:if not dsep_robots = "" then
'...
end if
PHP 中的最佳实践指出,当您使用可能存在或可能不存在的变量时,您应该始终测试
if (isset($var)) {...}
(如果变量不存在,不这样做将触发一个通知)。ASP 中是否有这样的东西——即我真的需要测试它是否存在,或者我可以简单地测试它是否有值?
最佳答案
顺便说一下,您的问题不是关于经典 ASP,而是 VBScript 问题。 VBScript 可以出现在 ASP 之外的脚本中。编译不是在 VBScript 中完成的,因为它是一种解释性语言。没关系。
我认为这里有些困惑——你的问题似乎更多地与未初始化的变量有关,而不是与未声明的变量有关。对于未声明的变量,请参见下文。
对于未初始化,尝试函数IsEmpty .
要检查空值,请尝试函数 IsNull .
dim x
x = 1
dim t
Response.write isempty(x)
Response.write "<br>"
Response.write isempty(t)
将显示:
错误的
真的
检测未声明的变量
如果在 header 中包含 Option Explicit,则使用未声明的变量将导致运行时错误。如果您的脚本不是 Option Explicit,则不会生成错误,并且没有函数会告诉您变量是否已声明。这听起来很草率,确实如此,但这是故意的。
避免这种情况的唯一方法是实际设置 Option Explicit,然后捕获当您尝试使用未声明的变量时会遇到的错误。如果您捕获此特定错误,您会发现它具有 Err.Number = 500。因此,以下将执行您想要的操作:
Option Explicit
dim x
On Error Resume Next
Response.Write dsep_robots
If Err.Number > 0 Then
Response.Write Err.Number
end if
当然,如果您设置了 Option Explicit 并且您的代码充斥着未声明的变量,那么您将到处抛出错误,因此您需要在代码顶部设置 On Error Resume Next 以便您可以成功忽略它,只在你想要的时候捕获它。
顺便说一下,这里是微软对 VBScript 的在线引用:
http://msdn.microsoft.com/en-us/library/d1wf56tt(v=VS.85).aspx
关于asp-classic - 如何判断 ASP 中的变量是否已声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098441/