asp-classic - ASP session 变量 : Is "" same as IsEmpty?

标签 asp-classic session-variables is-empty defaultifempty

在 ASP 中,未初始化的 session 变量为空。我知道检查 Session 值和删除值的正确方法如下:

IF NOT IsEmpty(Session("myVar")) THEN
  ' Go ahead and use Session("myVar")
  ...
  ' Now if we're all done with myVar then remove it:
  Session.Contents.Remove("myVar")
END IF

我继承了一个代码库,其中通常设置 Application 和 Session 变量 = ""使用后,对值的所有测试均采用 (Sessions("myVar") = "") 形式.当 Session 变量没有被声明时,这个测试似乎有效......或者它可能只是靠运气。

使用与空字符串的比较来测试 Session 变量是否安全?即,以下是否与上面显示的正确方法“实际上一样好”?
IF Session("myVar") <> "" THEN
  ' Go ahead and use Session("myVar")
  ...
  ' Now if we're all done with myVar then blank it:
  Session("myVar") = ""
END IF

或者我应该重构代码库,以便:
  • 确定是否已设置 session 变量的所有测试的形式都是 IsEmpty(Session("myVar"))
  • 所有 session 变量都是 Remove d 且未设置 = "" ?
  • 最佳答案

    Empty是怪兽:同时等于两者""0 .说真的,试试看:

    dim x, y, z
    x = Empty
    y = ""
    z = 0
    Response.Write (x = y) AND (x = z)
    

    它会写出“True”。

    这意味着测试 Not IsEmpty(myvar)相当于测试myvar <> "" ,但是 IsEmpty(myvar)不是 相当于 myvar = "" .无论这种主要的理论差异是否困扰您,只有您才能回答,但就个人而言,我不会浪费时间进行重构。

    如果您决定重构,我建议您忘记 IsEmptyIsNull以及诸如此类的,只需使用 & "" “黑客”:
    If Session("myvar") & "" <> "" Then
    

    这将透明地处理空值和空值,而无需编写一大堆代码。

    关于asp-classic - ASP session 变量 : Is "" same as IsEmpty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663205/

    相关文章:

    asp.net - 我可以在同一个 Web 应用程序中同时运行 ASP 和 ASP.NET 页面吗?

    asp.net-mvc - 如何在 ASP.net MVC 3 View 中包含纯 HTML 或经典 ASP 文件的内容?

    javascript - 使用 Session.Timeout 在 ASP 中不活动后重定向

    c# - ASP.net 将宽度设置为存储在 C# 中的值

    Access 导出中的 Excel 单元格看起来是空的,但不是 (=isblank=FALSE)

    Java正则表达式检查给定值的长度

    asp-classic - ASP 页面中的响应缓冲区限制超出错误

    php - 登录时销毁 session 并禁用返回

    excel - 将多个值写入一个单元格 - VBA

    php - 在 session 过期时将 session 变量保存到数据库