程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> VBScript中變量作用域

VBScript中變量作用域

編輯:關於ASP編程
下午在寫程序的時候,碰到個變量重定義的問題,具體是在一個函數中的兩個地方定義了相同的變量,兩個變量分別放在IF語句的兩部分中,本來以為這兩次定義在語句中不同的塊,應該沒有影響,然而在運行中IIS卻提示變量重定義,把重復定義去掉即正確。

解決了問題之後突然想到在Fdream的blog看過一篇文章《JavaScript變量無塊級作用域》,似乎這兩個是差不多的,在VBScript中變量同樣沒有塊級作用域。

再次去看了那篇文章之後我也做了下試驗,得到結果:在VBScript中,函數中定義的變量的作用域是整個函數,而不是塊級,不管這個變量是在函數中哪個位置定義的。因此,函數中一個變量不管在函數的哪個位置定義,它在整個函數中都可以使用。

下面用一些例子來說明這個問題。
復制代碼 代碼如下:
Option Explicit
Sub foo()
    Dim var
    var="hello,world!"
    MsgBox var
End Sub
Call foo()

下面的代碼跟上面的代碼等效,但是var的定義放在了函數的最後:
復制代碼 代碼如下:
Option Explicit
Sub foo()
    var="hello,world!"
    MsgBox var
    Dim var
End Sub
Call foo()

下面的例子說明變量不管在哪定義,在整個函數中都是可以使用的,當然如果把定義的位置放的特殊一點有利於代碼的清晰,閱讀起來比較方便,修改時也比較方便。
復制代碼 代碼如下:
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開發中,寫一個函數時通常的做法是變量到用時才定義,雖然變量的作用域與定義的位置無關,不過我覺得還是寫在變量使用之前比較好,以後改起代碼來比較方便,不至於修改了一段代碼之後還要翻到函數頭去修改變量定義。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved