BearbeitenWarum liefert die Funktion IsNumeric manchmal den Wert True für nicht numerische Werte zurück?
Die Abfrage
isNumeric(12) liefert True, genauso wie die Stringabfrage
isNumeric("12") - so, wie man es erwartet. Tatsache ist aber, daß isNumeric() für eine nicht initialisierte Variable ein wenig unerwartet den Wert True zurückliefert.
Folgende zwei Fälle liefern also ein "unerwartetes" Ergebnis:
Dim a
Response.Write isNumeric(a)
und
b = Empty
Response.Write isNumeric(b)
Wie umgeht man diesen Bug vernünftig? Der einfachste Weg besteht darin, jeder zu prüfenden Variable einen Leerstring hinzuzufügen, was solange gut geht als es sich nicht um ein Objekt handelt. (Aber wer prüft normalerweise ein Objekt auf isNumeric?)
Also in Zukunft statt isNumeric(Variable) besser isNumeric("" & Variable) verwenden. Die zwei Beispielskripts liefern also in folgender Form das erwartete Ergebnis ("True"):
Dim a
Response.Write isNumeric("" & a)
und
b = Empty
Response.Write isNumeric("" & b)