Execute 語句
執行一個或多個指定的語句。
Execute statements
所需要的 statements 參數是一個字符串表達式,其中包含一個或多個要執行的語句。 如果要在 statements 參數中包含多條語句,應使用分號或嵌入的分行將其分隔開。
說明
在 VBScript 中,x = y 可以有兩種解釋。首先是作為賦值語句,將 y 的值賦予 x。其次是作為表達式,測試x 和 y 的值是否相等。如果相等,結果為 True;否則,結果為 False。Execute 語句總是使用第一種解釋,而 Eval 方法總是使用第二種。
注意 在 Microsoft(R) Visual Basic Scripting Edition 中并不存在賦值與比較之間的混淆,因為賦值運算符(=)與比較運算符(==)是不同的。
調用 Execute 語句的上下文確定了要運行的代碼可以使用的對象和變量。作用域內的對象和變量是 Execute 語句中運行的代碼可以使用的。不過,必須明白的一點是,如果被執行的代碼創建了過程,那么該過程將不會繼承它所在的過程的作用域。
與其他過程類似,新的過程的作用域是全局的,它繼承了全局作用域的全部東西。與其他過程不同的是,它的上下文不是全局作用域,因此它只能在發生 Execute 語句的過程內的上下文中執行。不過,如果相同的 Execute 語句是在過程之外(例如在全局作用域)的作用域中被調用,那么它將不僅繼承全局作用域中的所有東西,而且它還可以在任何地方被調用,因為它的上下文是全局的。下面的例子說明了這種特點:
Dim X
'
在全局作用域中聲明 X
。X = "Global"
'
將全局的 X
賦值。Sub Proc1
'
聲明過程。 Dim X
'
在局部作用域中聲明 X
。 X = "Local"
'
對局部的 X
賦值。 '
此處的 Execute
語句建立了一個過程, '
在調用該過程時它將打印 X
。 '
它打印的將是全局 X
,因為 Proc2
'
繼承了全局作用域中的一切。 Execute "Sub Proc2: Print X: End Sub"
Print Eval("X")
'
打印本地 X
。 Proc2
'
在 Proc1
的作用域中調用 Proc2
。End Sub
Proc2
'
本行將導致一個錯誤,因為 ' Proc2
在 Proc1
之外是不可使用的。Proc1
'
調用 Proc1
。 Execute "Sub Proc2: Print X: End Sub"
Proc2
'
這句話可以成功,因為 Proc2
'
現在是全局可用的。
下面的例子顯示了如何將 Execute 語句改寫,免于將整個過程包含在引號內:
S = "Sub Proc2" vbCrLfS = S " Print X" vbCrLf S = S "End Sub"Execute S