strPath
в процедуре DisplayPath
будет новой переменной, но не по тем причинам, которые вы ожидаете, есть небольшая проблема с вашим кодом, которая затмит проблему.
При вызове Sub
Процедура синтаксиса VBScript не включает скобки.Например: -
Sub MyProc(Param1, Param2)
'' # Do stuff
End Sub
MyProc("Hello", "World")
приведенное выше приведет к синтаксической ошибке.Он должен называться: -
MyProc "Hello", "World"
Теперь, когда есть только один параметр, синтаксическая ошибка не возникает.Это потому, что другое использование круглых скобок является частью выражения, например, '(a + b) * c'.В случае: -
DisplayPath(strPath)
VBScript разрешает «выражение» (strPath)
и передает результат в DisplayPath
.Этот результат , который приводит к появлению нового хранилища, содержит результат в выражении.
Если бы вы позвонили с
DisplayPath strPath
без создания.
Однако что по этому поводу: -
Sub DisplayPath(something)
MsgBox something
End Sub
По-прежнему не выделено новое хранилище.something
будет указывать на ту же память, что и strPath
.
Редактировать
Код ниже работает: -
Dim strPath
strPath = "c:\folder"
Display
Sub Display()
MsgBox strPath
End Sub
объявление strPath
вне процедуры приводит к тому, что она имеет глобальную область видимости.
Что касается использования явного Dim
, что произойдет, если строка назначения выше будет выглядеть так?
strPath = "c:\folder"
Появится новая переменная с именем strPath
, а strPath
останется пустым.Вы должны всегда начинать свои файлы VBScript со строки: -
Option Explicit
Это заставит вас явно Dim
использовать все переменные и сэкономит вам часы отладки.