在 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
或者我应该重构代码库,以便:
IsEmpty(Session("myVar"))
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 = ""
.无论这种主要的理论差异是否困扰您,只有您才能回答,但就个人而言,我不会浪费时间进行重构。如果您决定重构,我建议您忘记
IsEmpty
和 IsNull
以及诸如此类的,只需使用 & ""
“黑客”:If Session("myvar") & "" <> "" Then
这将透明地处理空值和空值,而无需编写一大堆代码。
关于asp-classic - ASP session 变量 : Is "" same as IsEmpty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663205/