我注意到在使用它之后我可以Dim使用变量,或者(换句话说)在使用之前使用它,即使在使用时也是如此.试试这个:DimOption Explicit
Option Explicit
x = "before Dim"
WScript.Echo x
Dim x
x = "after Dim"
WScript.Echo x
Run Code Online (Sandbox Code Playgroud)
同样在a Sub或Function.
显然,不要紧上线的Dim是,只要是在同一范围内(电流Function/ Sub或全球).我想知道为什么会这样.微软的文档明确说明(强调我的):
脚本级变量的生命周期从声明的时间延长到脚本完成运行的时间.
我读的就像:先Dim使用.但是我错了...?为什么是这样?!
VB6也不会允许这样的:
---------------------------
Microsoft Visual Basic
---------------------------
Compile error:
Variable not defined
---------------------------
OK Help
---------------------------
Run Code Online (Sandbox Code Playgroud)
小智 8
摘录是合同以及您必须遵循的内容,因为我们不依赖于实现.对于您的一般信息声明被提升到顶部.Eric Lippert 写道:
为什么我们可以在VBScript中声明它之前使用变量?...
那是怎么回事?好吧,让我问你这个问题 - 如果你认为这看起来很奇怪,为什么你认为这看起来很正常?
Run Code Online (Sandbox Code Playgroud)Dim s s = Foo(123) Function Foo(x) Foo = x + 345 End Function函数在声明之前就被使用了,但这不会给你带来麻烦,对吧?
同样,变量可以在声明之前使用.行为是设计的.在VBScript和JScript中,变量声明和函数在逻辑上"悬挂"到其作用域的顶部.
编辑
VBScript尽可能遵循VBA规则.这是实现VBA的实现文档.对于VBS/VBA程序员,它仅供参考.
https://msdn.microsoft.com/en-us/library/dd361851.aspx