Ich unterstütze/verbessere eine Webanwendung, die in Classic ASP/VBScript geschrieben wurde. Es ist ungefähr 10 Jahre her, seit ich entweder in einer täglichen Kapazität verwendet habe. Ich bin gerade auf ein Problem gestoßen, das ich als "gotcha" bezeichnen würde und fragte mich, ob andere ähnliche Dinge hätten, die ich beachten sollte.ASP/VBScript "Gotchas"
Mein Problem:
Ich musste eine Spalte in einer SQL-Tabelle von Float zu Dezimal konvertieren. Es stellt sich heraus, dass dezimal nicht ein Typ ist, der in VBScript wirklich unterstützt (oder gut unterstützt) wird. So ist der folgende Code:
Dim var1, var2
var1 = rs("DecimalField1").Value
var2 = rs("DecimalField2").Value
If (var1 <> var2) Then
'Do Something'
End If
Würde mit einem Type Mismatch Fehler auf der Linie sprengen:
If (var1 <> var2) Then
Nach langem Suchen fand ich heraus, dass:
var1 = CDBL(rs("DecimalField1").Value)
var2 = CDBL(rs("DecimalField2").Value)
das Problem behebt. Aber das schien nicht selbstverständlich zu sein und ich brauchte eine Weile, um herauszufinden, warum zum Teufel ich einen Typ Mismatch in dieser Zeile bekam.
Also meine Frage an alle ist, was andere kleine Macken wie diese haben Sie rüber? Was sind einige Dinge in ASP/vbscript, die Sie als "gotchas" betrachten würden, nach denen ich Ausschau halten sollte?
Es ist einfacher, Anweisungen zu lesen und zu schreiben, die keine unumgänglichen Klammern haben. –
Ihre Verwendung des Begriffs Ausdruck ist irreführend, eine Aussage ist kein Ausdruck. Bei Verwendung einer Funktion in einem Ausdruck werden immer Klammern benötigt. Ich habe noch nie gesehen, dass irgendjemand diesen Fehler versucht hat, und da dies als Syntaxfehler aufgefasst wird, ist es kaum ein "Gotcha" – AnthonyWJones
Es ist kein langwieriger Gotcha, aber es ist ein gewöhnlicher, der (meistens neue) VBScript-Autoren stolpert. Ich habe nicht gesagt, dass eine Aussage ein Ausdruck war. Eine Anweisung enthält jedoch normalerweise Ausdrücke. Bei "DoSomething arg" handelt es sich um eine Aussage, die aus einem Funktionsaufruf-Ausdruck besteht. –