asp-classic - 如何判断 ASP 中的变量是否已声明

标签 asp-classic isset

首先让我说我是一名 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/

相关文章:

经典ASP的编码问题

json - 在经典 ASP 中将 JSON 内容添加到 WinHttpRequest POST 请求时出现问题

com - 在 HTTPD 中调试 ASP 页面

PHP 找不到在我的包含页面上显示产品的变量,有什么建议吗?

php - 如果我将 isset() 放在同一个 IF 语句中,为什么我没有收到 PHP 通知数组索引不存在?

asp-classic - 使用 SMTP 身份验证的经典 ASP 发送电子邮件

vbscript - Dim 和 Public 和有什么不一样?

即使在浏览器刷新后使用 isset() 提交按钮检查,PHP 脚本仍然会被执行

php - 在另一个函数中使用 php 的魔术函数不起作用

php - 如果日期已经存在或有重复,则求和时间