Давайте попробуем с простым кодом со включенным Option Explicit
, поэтому парсер VBScript запрашивает, чтобы все переменные, используемые в коде, были объявлены
Option Explicit
WScript.Echo TypeName( data )
WScript.Echo TypeName( MY_DATA )
Dim data : data = 10
Const MY_DATA = 10
WScript.Echo TypeName( data )
WScript.Echo TypeName( MY_DATA )
Когда он будет выполнен, он будет
Empty
Integer
Integer
Integer
То есть
При первом доступе к data
ошибка не генерируется. Объявление переменной (оператор Dim
) поднято. Если переменная объявлена внутри той же (или внешней) области, в которой она будет использоваться, проблем не будет.
Но первый вывод - Empty
. Поднимается только объявление, а не присвоение значения, которое не выполняется до тех пор, пока не будет достигнута строка, содержащая его.
Это не относится к объявлению констант. Его значение заменяется кодом, в котором оно используется, но реальное объявление задерживается до достижения строки const
(читайте здесь ).
Пока переменные / константы могут быть достигнуты (они объявлены в той же или внешней области видимости), это не имеет значения (для синтаксического анализатора / механизма VBScript), где вы размещаете объявление.
Но, конечно, вам или другим придется поддерживать код. Возможность размещать переменные в любом месте не означает, что вы должны делать что-то вроде предыдущего кода (пожалуйста, не надо) Код намного проще читать / поддерживать, если объявление переменной выполняется до инициализации / использования. Точный способ сделать это зависит только от стиля кодирования.