The strPath
in the DisplayPath
procedure 将是一个新变量,但不是出于您期望的原因,您的代码存在微妙的问题,这将使问题变得模糊。
打电话时Sub
VBScript 语法不包含括号。例如:-
Sub MyProc(Param1, Param2)
'' # Do stuff
End Sub
MyProc("Hello", "World")
以上将导致语法错误。它应该被称为:-
MyProc "Hello", "World"
现在,当只有一个参数时,不会发生语法错误。这是因为括号的另一种用法是作为表达式的一部分,例如'(a + b) * c'。如果是:-
DisplayPath(strPath)
VBScript解析“表达式”(strPath)
并通过result to DisplayPath
。是这个result这会产生新的存储来保存表达式的结果。
你打电话给
DisplayPath strPath
没有新创建。
然而这个又如何呢:-
Sub DisplayPath(something)
MsgBox something
End Sub
仍然没有分配新的存储空间。something
将指向相同的内存strPath
does.
Edit
下面的代码有效:-
Dim strPath
strPath = "c:\folder"
Display
Sub Display()
MsgBox strPath
End Sub
的声明strPath
在过程之外导致它具有全局范围。
至于使用显式的点Dim
如果上面的赋值行看起来像这样会发生什么?
strPath = "c:\folder"
一个新变量称为strPath
将出现并且strPath
将保持空白。你应该always以以下行开始 VBScript 文件:-
Option Explicit
这将迫使你明确地Dim
要使用的所有变量,将为您节省数小时的调试时间。