ExecuteGlobal 语句
来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 04:36 点击:次
ExecuteGlobal 语句
执行一个功多个在脚本全局名字空间中指定的语句。
ExecuteGlobal statement
statement 参数是一个包含一个或多个可执行语句的字符串表达式 。在statement 参数中可以包含多条语句, 使用冒号将其分开。
说明
在 VBScript 中, x = y 有两种解释方法。第一种方法是作为一条赋值语句, 将 y 的值赋给 x。第二种方法是作为一个表达式,用于测试 x 和 y 是否具有相同的值。如果它们相等,则结果为 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 Sub
Proc2 ' 此行将导致错误
' 因为 Proc2 在 Proc1 之外是不可用的。
Proc1 ' 调用 Proc1。
Execute "Sub Proc2: 打印 X: End Sub"
Proc2 ' 此行调用成功,因为 Proc2
' 在全局作用区域中是可用的。
下面的例子演示了 ExecuteGlobal 语句可以被重写,因此您无需将下面的整个过程都包括在引用标记之内。
S = "Sub Proc2" & vbCrLf
S = S & " Print X" & vbCrLf
S = S & "End Sub"
ExecuteGlobal S
执行一个功多个在脚本全局名字空间中指定的语句。
ExecuteGlobal statement
statement 参数是一个包含一个或多个可执行语句的字符串表达式 。在statement 参数中可以包含多条语句, 使用冒号将其分开。
说明
在 VBScript 中, x = y 有两种解释方法。第一种方法是作为一条赋值语句, 将 y 的值赋给 x。第二种方法是作为一个表达式,用于测试 x 和 y 是否具有相同的值。如果它们相等,则结果为 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 Sub
Proc2 ' 此行将导致错误
' 因为 Proc2 在 Proc1 之外是不可用的。
Proc1 ' 调用 Proc1。
Execute "Sub Proc2: 打印 X: End Sub"
Proc2 ' 此行调用成功,因为 Proc2
' 在全局作用区域中是可用的。
下面的例子演示了 ExecuteGlobal 语句可以被重写,因此您无需将下面的整个过程都包括在引用标记之内。
S = "Sub Proc2" & vbCrLf
S = S & " Print X" & vbCrLf
S = S & "End Sub"
ExecuteGlobal S
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>