Asp classic 如何判断ASP中的变量是否已声明
首先让我说我是一名PHP开发人员,而不是ASP开发人员。(我真的希望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是否有值,如果有,则输出该值,否则不输出
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...