VBS教程:VBscript語句-ExecuteGlobal 語句

NO IMAGE

ExecuteGlobal 語句

執行一個功多個在指令碼全域性名字空間中指定的語句。

ExecuteGlobal statement

statement 引數是一個包含一個或多個可執行語句的字串表示式 。在statement 引數中可以包含多條語句, 使用冒號將其分開。

說明

在 VBScript 中, x = y 有兩種解釋方法。第一種方法是作為一條賦值語句, 將 y 的值賦給 x。第二種方法是作為一個表示式 ,用於測試 xy 是否具有相同的值。如果它們相等,則結果為 True; 如果他們不相等,其結果為 False.ExecuteGlobal 語句總是使用第一種方法,而 Eval 方法總是使用第二種方法。

注意  在 Microsoft? Visual Basic Scripting Edition?中, 賦值與比較之間不存在混消,因為賦值運算子(=) 不同於比較運算子。

在指令碼的全域性名字空間中,ExecuteGlobal 中的所有語句都有是可執行的。因此,允許您將程式碼新增到程式中,以便於任何 過程 能夠對其進行訪問。例如,一個 VBScript Class 語句在執行時可以執行。隨之函式創造此類的一個新例項。

在執行時新增過程和類是非常有用的,但是也可能導致在執行時覆蓋已有的全域性 變數 和函式。因為這可能導致非常嚴重的程式問題,因此,當使用 ExecuteGlobal 語句時一定得非常謹慎。如果您無需訪問過程之外的變數或函式,最好使用Execute 語句,因為它隻影響主調函式的名字空間。

下面的例子解釋了 ExecuteGlobal 語句的用法。

Dim X         ' 宣告 X 為全域性變數。X = "Global"      ' 給全域性變數 X 賦值。Sub Proc1   ' 宣告過程。  Dim X      ' 在區域性變數中宣告 X  X = "Local"   ' 給區域性變數 X 賦值。         ' 此處的可執行語句         ' 建立一個過程, 當被呼叫時, 列印 X。         ' 此處將列印全域性變數 X 的值,因為 Proc2         ' 繼承了全域性變數中的一切。  ExecuteGlobal "Sub Proc2: 列印 X: End Sub"  Print Eval("X")   ' 列印區域性 X  Proc2      ' 在全域性作用區域中呼叫 Proc2          ' 將列印 "Global" End SubProc2         ' 此行將導致錯誤          ' 因為 Proc2  Proc1 之外是不可用的。Proc1         ' 呼叫 Proc1  Execute "Sub Proc2: 列印 X: End Sub"Proc2         ' 此行呼叫成功,因為 Proc2         ' 在全域性作用區域中是可用的。

下面的例子演示了 ExecuteGlobal 語句可以被重寫,因此您無需將下面的整個過程都包括在引用標記之內。

S = "Sub Proc2" & vbCrLfS = S & "  Print X" & vbCrLf S = S & "End Sub"ExecuteGlobal S