欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VBScript中變量作用域

 更新時(shí)間:2007年02月27日 00:00:00   作者:  
下午在寫程序的時(shí)候,碰到個(gè)變量重定義的問(wèn)題,具體是在一個(gè)函數(shù)中的兩個(gè)地方定義了相同的變量,兩個(gè)變量分別放在IF語(yǔ)句的兩部分中,本來(lái)以為這兩次定義在語(yǔ)句中不同的塊,應(yīng)該沒(méi)有影響,然而在運(yùn)行中IIS卻提示變量重定義,把重復(fù)定義去掉即正確。

解決了問(wèn)題之后突然想到在Fdream的blog看過(guò)一篇文章《JavaScript變量無(wú)塊級(jí)作用域》,似乎這兩個(gè)是差不多的,在VBScript中變量同樣沒(méi)有塊級(jí)作用域。

再次去看了那篇文章之后我也做了下試驗(yàn),得到結(jié)果:在VBScript中,函數(shù)中定義的變量的作用域是整個(gè)函數(shù),而不是塊級(jí),不管這個(gè)變量是在函數(shù)中哪個(gè)位置定義的。因此,函數(shù)中一個(gè)變量不管在函數(shù)的哪個(gè)位置定義,它在整個(gè)函數(shù)中都可以使用。

下面用一些例子來(lái)說(shuō)明這個(gè)問(wèn)題。
復(fù)制代碼 代碼如下:

Option Explicit
Sub foo()
    Dim var
    var="hello,world!"
    MsgBox var
End Sub
Call foo()

下面的代碼跟上面的代碼等效,但是var的定義放在了函數(shù)的最后:
復(fù)制代碼 代碼如下:

Option Explicit
Sub foo()
    var="hello,world!"
    MsgBox var
    Dim var
End Sub
Call foo()

下面的例子說(shuō)明變量不管在哪定義,在整個(gè)函數(shù)中都是可以使用的,當(dāng)然如果把定義的位置放的特殊一點(diǎn)有利于代碼的清晰,閱讀起來(lái)比較方便,修改時(shí)也比較方便。
復(fù)制代碼 代碼如下:

Option Explicit
Sub foo()
    Dim var1
    var1="YES"
    MsgBox "var1: "&var1&vbCrLf&"var2: "&var2
    IF var1="YES" Then
        Dim var2
        var2="NO"
    End IF
    MsgBox "var1: "&var1&vbCrLf&"var2: "&var2
End Sub
Call foo()

在ASP開(kāi)發(fā)中,寫一個(gè)函數(shù)時(shí)通常的做法是變量到用時(shí)才定義,雖然變量的作用域與定義的位置無(wú)關(guān),不過(guò)我覺(jué)得還是寫在變量使用之前比較好,以后改起代碼來(lái)比較方便,不至于修改了一段代碼之后還要翻到函數(shù)頭去修改變量定義。

相關(guān)文章

最新評(píng)論