为什么此函数与任意数字相比作为空检查?

时间:2012-01-16 17:30:20

标签: asp-classic vbscript

我在一个ASP Classic中遇到过这个有趣的功能。起初我笑了,摇了摇头,然后哭了(只是一点点)。但后来我开始怀疑是否有任何正当理由为什么999999999999999显然会被视为NULL,因为VBScript有它的怪癖。正如注释中所提到的,传递给此函数的值是从COM dll返回的。

任何人都可以确认是否存在某些合理的理由,或者是否已成熟提交给TheDailyWTF。

function NullNumberCheck(Value)
    if IsNumeric(Value) then
        if Value = 999999999999999 then
            Value = ""
        end if
    end if
   NullNumberCheck = Value
end function

3 个答案:

答案 0 :(得分:2)

在数据源中看起来像是“魔术空”的情况 - 数据库中是否有一个列支持传递给此函数的值,该值不可为空?

Why are people using magic values instead of null in their code?

答案 1 :(得分:1)

作者正在使用此作为清除或取消设置变量的方法。通过将Value的值设置为空字符串,它将清除任何先前的值。作者可以轻松地将其设置为等于0,vbNull或vbEmpty。这实际上取决于您在脚本中稍后使用的值。如果继续对变量执行进一步检查,则将其设置为vbNull可能并不可取,如果使用Option Explicit,则将其设置为vbEmpty可能会导致脚本崩溃。

所以要回答你的问题,这不是检查“空”值的有效方法,因为它根本不是比较操作,它正在执行变量赋值。

答案 2 :(得分:0)

要检查空值,可以使用VBscript中内置的IsNull函数

http://www.w3schools.com/vbscript/func_isnull.asp