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

Asp classic 如何判断ASP中的变量是否已声明,asp-classic,isset,Asp Classic,Isset,首先让我说我是一名PHP开发人员,而不是ASP开发人员。(我真的希望ASP有isset()),我在一个实时环境中工作,所以我没有机会做任何测试 我找到的所有资源都提供了不同的方法来测试变量的存在性 以下是我想做的: 在某些页面上,我设置了一个变量,该变量保存robots标记的值: dim dsep_robots dsep_robots = "nofollow,noindex" 所有页面都包括标题.asp。在我的头文件中,我想测试dsep\u robots是否有值,如果有,则输出该值,否则不输出

首先让我说我是一名PHP开发人员,而不是ASP开发人员。(我真的希望ASP有
isset()
),我在一个实时环境中工作,所以我没有机会做任何测试

我找到的所有资源都提供了不同的方法来测试变量的存在性

以下是我想做的:

在某些页面上,我设置了一个变量,该变量保存robots
标记的值:

dim dsep_robots
dsep_robots = "nofollow,noindex"
所有页面都包括
标题.asp
。在我的头文件中,我想测试
dsep\u robots
是否有值,如果有,则输出该值,否则不输出任何内容

我认为测试
dsep\u robots
是否有值可能如下所示:

if not dsep_robots = "" then
    '...
end if
PHP中的最佳实践表明,当您使用一个可能存在或可能不存在的变量时,您应该始终测试
if(isset($var)){…}
(如果变量不存在,不这样做将触发一个通知)


ASP中有这样的东西吗?也就是说,我真的需要测试它是否存在,或者我可以简单地测试它是否有值吗?

@Jazzerus:我建议将header.ASP中的代码放入
子文件中,类似这样的内容

Sub outputHeader(ByRef MyTitle, Byref dsep_robots)    
  'contents of header.asp
End Sub
…然后在调用页面的顶部包含header.asp并使用

outputHeader "Title for this page", "value you want dsep_robots to have for page"
如果没有在该页面上设置
dsep\u robots
,则只需将第二个参数留空(“”)

然后,只需检查变量是否为空或不在
Sub
中即可:

If dsep_robots <> "" Then
  Response.Write dsep_robots
End If
如果dsep_机器人为“”,则
响应。编写dsep_机器人
如果结束

顺便说一句,你的问题不是关于经典的ASP,而是一个VBScript问题。VBScript可以出现在ASP以外的脚本中。编译不是用VBScript完成的,因为它是一种解释语言。别客气

我认为这里有一些混乱——您的问题似乎更多地涉及未初始化的变量,而不是未声明的变量。有关未声明的变量,请参见下文

对于未初始化的,请尝试该函数。 要检查null,请尝试该函数

当然,如果您设置Option Explicit,并且您的代码中充满了未声明的变量,那么您将得到到处抛出的错误,因此您需要在代码顶部的下一步设置Error Resume,这样您就可以成功地忽略它,并且只在需要时捕获它

顺便说一下,以下是Microsoft的VBScript在线参考:

关于:

 If NOT IsEmpty(myvariable) Then...

这似乎对我起了作用。

我最初将其标记为ASP.NET,DOK将其重新标记为ASP classic。至于Option Explicit,这个站点上使用的购物车软件没有设置它,而且作为一个实时站点,我真的不想做任何可能导致大量错误的更改,即使这符合ASP最佳实践的利益。我想我做错了。我应该在header.asp中执行检查,以确定它包含在哪个文件中,而不是先对变量进行调暗,然后再执行
。如果没有打开Option Explicit,还可以使用
IsEmpty
检查未声明的变量。但是,您无法区分未声明和未初始化。如果我使用SSI将函数包含在header.asp中,是否可以调用该函数:
?以下两个答案中的任何一个对您有效?:-)我决定采用不同的方法,这不再是一个问题。好吧,你也许可以决定你最喜欢的答案并接受它(即使你采用不同的方法),只是为了奖励至少一个花时间和精力试图帮助你的人。就这么说吧。
Option Explicit

dim x

On Error Resume Next

Response.Write dsep_robots  
If Err.Number > 0 Then
    Response.Write Err.Number
end if
 If NOT IsEmpty(myvariable) Then...