我支持/增強用傳統ASP/VBScript編寫的Web應用程序。自從我使用日常的能力已經有大約10年了。我只是遇到了一個我認爲是「疑難雜症」的問題,並且想知道其他人是否有類似的事情,我應該學會注意。我不得不將SQL表中的Column從float轉換爲decimal。事實證明,十進制不是在vbscript中真正支持(或很好地支持)的類型。所以下面的代碼:ASP/VBScript「Gotchas」
Dim var1, var2
var1 = rs("DecimalField1").Value
var2 = rs("DecimalField2").Value
If (var1 <> var2) Then
'Do Something'
End If
會炸掉就行類型不匹配錯誤:
If (var1 <> var2) Then
經過一番搜索我發現:
var1 = CDBL(rs("DecimalField1").Value)
var2 = CDBL(rs("DecimalField2").Value)
解決問題。但是這看起來並不是一件顯而易見的事情,我花了一段時間才弄清楚爲什麼我得到的是類型不匹配。
所以我對每個人的問題是,你碰到過這樣的其他小怪癖嗎? ASP/VBScript中有什麼東西可以作爲我應該關注的「陷阱」?
讀取和寫入沒有不必要的括號的語句比較容易。 – 2008-11-13 17:14:05
您對術語表達的使用具有誤導性,聲明不是表達式。在表達式中使用函數時,總是需要使用括號。我從來沒有見過任何人嘗試過這個錯誤,並且因爲這被認爲是一個語法錯誤,所以它幾乎不是一個'Gotcha' – AnthonyWJones 2008-11-14 06:23:41
這不是一個長期存在的問題,但是它是一個常見的(大部分是新的)VBScript作者。我沒有說一個陳述是一個表達。但是,聲明通常包含表達式。在「DoSomething arg」的情況下,它是由一個功能調用表達式組成的語句。 – 2008-11-14 18:21:47