我注意到在使用它之后我可以Dim
变量,或者(换句话说)在Dim
之前使用它,即使使用Option Explicit
也是如此。试试这个:
Option Explicit
x = "before Dim"
WScript.Echo x
Dim x
x = "after Dim"
WScript.Echo x
同样适用于Sub
或Function
。
显然,Dim
在哪一行上无关紧要,只要它在同一范围内(当前Function
/ Sub
或全局)。我想知道为什么会这样。微软的documentation明确表示(强调我的):
脚本级变量的生命周期从开始 声明直到脚本运行完毕。
我读到这个:首先Dim
然后使用。但是我错了...?这是为什么?!
VB6 不允许这样做:
---------------------------
Microsoft Visual Basic
---------------------------
Compile error:
Variable not defined
---------------------------
OK Help
---------------------------
答案 0 :(得分:8)
摘录是契约,你必须遵循,因为我们不依赖于实现。对于您的一般信息声明被提升到顶部。 Eric Lippert wrote:
为什么我们可以在VBScript中声明它之前使用变量? ...
这是怎么回事?好吧,让我问你一下 - 如果你这么想的话 看起来很奇怪,为什么你认为这看起来很正常?
Dim s s = Foo(123) Function Foo(x) Foo = x + 345 End Function
该函数在声明之前正在使用,但是 不会惹你生气,对吗?
同样,变量可以在声明之前使用。该 行为是设计的。变量声明和函数是 在VBScript和VBScript中,逻辑上“悬挂”到其范围的顶部 JScript中。
修改强>
VBScript尽可能遵循VBA规则。这是实现VBA的实现文档。对于VBS / VBA程序员,它仅供参考。