Wspieram/ulepszam aplikację internetową napisaną w klasycznym ASP/VBScript. Minęło około 10 lat, odkąd używam ich codziennie. Właśnie natknąłem się na kwestię, którą uważam za "gotcha" i zastanawiałem się, czy inni mają podobne rzeczy, których powinienem się nauczyć.ASP/VBScript "Gotchas"
Mój problem:
Musiałem przekonwertować kolumnę w tabeli SQL z wartości liczbowej na dziesiętną. Okazuje się, że dziesiętny nie jest typem, który jest naprawdę obsługiwany (lub obsługiwany dobrze) w vbscript. Więc następujący kod:
Dim var1, var2
var1 = rs("DecimalField1").Value
var2 = rs("DecimalField2").Value
If (var1 <> var2) Then
'Do Something'
End If
Czy wysadzić z błędem Niezgodność typu na linii:
If (var1 <> var2) Then
Po długich poszukiwaniach okazało się, że:
var1 = CDBL(rs("DecimalField1").Value)
var2 = CDBL(rs("DecimalField2").Value)
rozwiązuje ten problem. Ale nie wydawało się to oczywiste i zajęło mi trochę czasu, aby dowiedzieć się, dlaczego do cholery dostaję niedopasowanie typu w tej linii.
Więc moje pytanie do wszystkich jest takie, jakie inne dziwactwa takie jak to masz? Jakie rzeczy można znaleźć w ASP/vbscript jako "gotchas", na które powinienem zwrócić uwagę?
Łatwiej jest czytać i pisać instrukcje, które nie mają niepoprawnego nawiasu. –
Używanie wyrażenia jest mylące, oświadczenie nie jest wyrażeniem. Podczas używania funkcji w wyrażeniu zawsze są potrzebne nawiasy. Nigdy nie widziałem, żeby ktokolwiek próbował tego błędu, a ponieważ jest to błędem składniowym, to nie jest to "Gotcha" – AnthonyWJones
To nie jest długotrwały problem, ale jest pospolity, który wyrusza w górę (głównie nowych) autorów VBScript. Nie powiedziałem, że oświadczenie było wyrażeniem. Jednak instrukcja zazwyczaj zawiera wyrażenia. W przypadku "DoSomething arg" jest to instrukcja składająca się z jednego wyrażenia wywołującego funkcję. –