Asp classic 为什么将此函数与作为空检查的任意数字进行比较?

Asp classic 为什么将此函数与作为空检查的任意数字进行比较?,asp-classic,vbscript,Asp Classic,Vbscript,我在我维护的ASP经典中遇到了这个有趣的函数。起初我笑了,摇了摇头,然后哭了(只有一点点)。但后来我开始怀疑,既然VBScript有它的怪癖,为什么99999999999999显然会被视为空值,是否有任何合法的理由。如注释中所述,传递给此函数的值是从COM dll返回的 有谁能证实这是否有正当的理由,或者提交给每日工作队的时机是否成熟 function NullNumberCheck(Value) if IsNumeric(Value) then if Value = 9

我在我维护的ASP经典中遇到了这个有趣的函数。起初我笑了,摇了摇头,然后哭了(只有一点点)。但后来我开始怀疑,既然VBScript有它的怪癖,为什么99999999999999显然会被视为空值,是否有任何合法的理由。如注释中所述,传递给此函数的值是从COM dll返回的

有谁能证实这是否有正当的理由,或者提交给每日工作队的时机是否成熟

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

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


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

因此,要回答您的问题,这不是检查“null”值的有效方法,因为它根本不是一个比较操作,而是执行变量赋值。

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


我只是想澄清一下,我知道如何检查null、nothing和empty。我只是想知道原作者的想法。谢谢Dee,但这并不能回答问题。问题是“这是在经典ASP/VBScript中检查空值的有效方法吗?”为了实现某些目标,总会有一些变通方法,所以我发布了推荐的方法。我更新了这个问题,试图澄清它是关于这个特定函数的,而不是如何在ASP/VBScript中实现这个愚蠢的小函数不会检查空值。它检查一个数值,然后检查它是否有一个特定的数字“标志”。如果为真,则重置为空字符串。无法知道代码的目的是什么。为什么将其命名为nullnumbercheck毫无意义。请参见下面的答案-这似乎是使用“幻数”来表示null值的情况。我尝试在DB中找到此值,但没有任何效果。它正在调用一个用我假设的C约定编写的API,可能是相关的。API可能将其用作magic null,因为如果返回类型为int,则API除了返回类型的正常域外的magic值之外,无法指示“null”。。。这甚至是使用magic null的合法方式之一。