直播中
首先, 我們必須知道在 VBScript 中, Variant 是唯一的一種資料型態(tài), 對於那些已經(jīng)熟悉其他語言的程式開發(fā)者, 可能會(huì)感到有點(diǎn)不習(xí)慣。 使用 Variant 的好處在於其相當(dāng)有彈性, 因?yàn)?Variant 可以儲(chǔ)存任何資料類型, 例如, 整數(shù), 字串, 日期時(shí)間, 甚至包括物件及陣列。然而彈性是必須付出代價(jià)的, 因?yàn)橹付?Variant 可能會(huì)比指定特殊資料類型所用到的記憶體來得多
在 Variant 資料類型中還有兩種很特殊的子類型 (Subtype): Empty 及 Null, 事實(shí)上稱子類型可能不太恰當(dāng), 因?yàn)樗麄儊K不儲(chǔ)存某些值, 當(dāng)一個(gè)變數(shù)的資料子類型為 Empty 或 Null, 他們的值就是 Empty 或 Null
Empty
一個(gè)變數(shù)在被宣告後, 但在其被指定一個(gè)值之前, 這個(gè)變數(shù)的資料子類型就是 Empty, 換句話說, Empty 就相當(dāng)於"尚未初始化", 我們來看看下面的例子
Dim varTest
Response.Write TypeName(varTest)
其執(zhí)行結(jié)果應(yīng)該為 Empty, 因此 Empty 可以說是一個(gè)變數(shù)的初始資料子類型及初始值, Empty 只是代表一個(gè)變數(shù)的狀態(tài), 試試下面的例子
Dim varTest
Response.Write CLng(varTest)
Response.Write CStr(varTest)
第一行的程式將顯示 0, 因?yàn)?Empty 被表示為整數(shù)時(shí)就是 0, 第二行執(zhí)行之結(jié)果將是什麼都不顯示, 因?yàn)楫?dāng)被表示為字串時(shí) Empty 就是 Empty, 或可說是長度為零的字串
當(dāng)一個(gè)變數(shù)被指定一個(gè)值後, 它便不再是 Empty, 它將是其他的子類型, 依資料的類型而有所不同, 當(dāng)然, 你還是可以利用 Empty 這 個(gè)關(guān)鍵字將這變數(shù)變回 Empty 子類型
varTest = Empty
有兩種方式你可以判斷一個(gè)變數(shù)是否為 Empty
If varTest = Empty Then
Response.Write "The variable is empty."
End If
或是
If IsEmpty(varTest) Then
Response.Write "The variable is empty."
End If
Null
Null 這個(gè)資料子類型 和 Empty 很類似, 但不同點(diǎn)在於 Empty 代表一個(gè)變數(shù)尚未被初始化, 也就是還沒有被賦予任何的值, 而一個(gè)變數(shù)為 Null 只有在你指定它為 Null 之後。最常遇到 Null 的機(jī)會(huì)應(yīng)該是在處理資料庫的時(shí)候, 當(dāng)一個(gè)欄位沒有資料時(shí), 便是 Null
指定和判斷 Null 的方法與 Empty 很類似
varTest = Null
然而你只能使用 IsNull() 函數(shù)來判斷 Null, 這是因?yàn)?Null 所代表的是不合法的資料, 你可以試試以下的例子
Dim varTest
varTest = Null
If varTest = Null Then
Response.Write "The variable has a Null value."
End If
執(zhí)行的結(jié)果並不會(huì)顯示 The variable has a Null value. 要判斷一個(gè)變數(shù)是否為 Null 你應(yīng)該使用 IsNull() 函數(shù)
Dim varTest
varTest = Null
If IsNull(varTest) Then
Response.Write "The variable has a Null value."
End If
當(dāng)你在處理由資料庫中所取出的 Null 的資料時(shí), 你必須要很注意, 因?yàn)?Null 所代表的是不合法的資料, 當(dāng)某些函數(shù)在處理數(shù)學(xué)運(yùn)算時(shí), Null 可能會(huì)製造一些麻煩, 例如
Dim varTest
varTest = Null
varTest = CLng(varTest)
執(zhí)行結(jié)果你將看到 "Invalid Use of Null" 的錯(cuò)誤訊息, 再看看下面的例子
Dim varTest
Dim lngTest
varTest = Null
lngTest = 2 + varTest
Response.Write TypeName(lngTest)
你會(huì)發(fā)現(xiàn), Null 加上 2 還是 Null 因此, 當(dāng)你從資料庫取得資料後, 你應(yīng)先用 IsNull() 來判斷欄位是否為 Null, 再做適當(dāng)?shù)奶幚? 例如
lngQty = oRs("Quantuty")
If IsNull(lngQty) Then
lngQty = 0
End If
希望這篇文章對你有幫助!