当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何判断ASP中的变量是否已声明》经验,为你挑选了2个好方法。

让我先说我是PHP开发人员,而不是ASP开发人员.(而且我真的希望ASP有isset().)而且我在现场环境中工作,所以我真的没有机会做任何测试.

我发现的所有资源都提出了测试变量存在的不同方法.

这是我正在尝试做的事情:

在某些页面上,我设置了一个变量,其中包含机器人标记的值:

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中是否有这样的东西 - 即我是否真的需要测试它是否存在,还是我可以简单地测试它是否有值?



1> Cyberherbali..:

顺便说一句,你的问题不是关于经典的ASP,而是一个VBScript问题.VBScript可以出现在ASP之外的脚本中.并且编译不是在VBScript中完成的,因为它是一种解释语言.没关系.

我认为这里存在一些混淆 - 你的问题似乎与未初始化的变量有关,而不是未声明的变量.对于未声明的变量,请参见下文.

对于未初始化,请尝试使用IsEmpty函数.要检查null,请尝试使用IsNull函数.

dim x
x = 1
dim t
Response.write isempty(x)
Response.write "
" Response.write isempty(t)

将显示:

真正

检测未声明的变量

如果在标头中包含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



2> stealthyninj..:

@Jazzerus:我建议把header.asp中的代码放到一个Sub类似的东西中

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_robots在该页面上设置,那么只需将第二个参数留空("")

然后只需检查变量是否为空Sub就足够了:

If dsep_robots <> "" Then
  Response.Write dsep_robots
End If

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有