VBScript中变量的范围

时间:2013-01-01 16:57:49

标签: vbscript scope

考虑以下代码:

Option Explicit

Dim Count : Count = 4


'Case-I
Sub Display1()

 MsgBox(Count)

End Sub

'Case-II

Sub Display2(Count)

 MsgBox(Count)

End Sub

混乱

  • 此处应该可以访问变量Count method或仅Display2方法?
  • 如果使用count方法无法访问变量Display1,那么 有没有办法让它在任何子或函数中可用 没有将其传递给SubFunction
  • 现在,如果我更新了Count sub中的Display2变量 该值可用于其他functionsub VBScript具有global变量声明。

1 个答案:

答案 0 :(得分:2)

变量count在任何函数或子过程之外声明,因此其范围在这里是全局的。全局变量可以在任何函数或子过程中使用,其值可以在程序流中的任何位置进行更改。

现在,如果您调用此过程并运行.vbs文件,则在两种情况下都会显示消息框4

Option Explicit

Dim Count : Count = 4
'Case-I
Sub Display1()
 MsgBox(Count)
End Sub

'Case-II
Sub Display2(Count)
 MsgBox(Count)
End Sub

Call Display1()
Call Display2(Count)

如果在任何函数或子过程中更改count变量的值,则其值将更改为其他过程,因为其范围是全局的。

选项明确

Dim Count : Count = 4
'Case-I
Sub Display1()
 Count = 5               ''value changed here 
 MsgBox(Count)
End Sub

'Case-II
Sub Display2(Count)
 MsgBox(Count)
End Sub

Call Display1()
Call Display2(Count)

在上述情况下,两个消息框都会显示5