Переменные VBScript
Что такое переменная
Переменная — это ссылка на местоположение в памяти компьютера, где вы можете
сохранять программную информацию, которая может изменяться в процессе выполнения
сценария. Переменная имеет имя (идентификатор). Таким образом, вместо обращения
к памяти по адресу, вы можете просто объявить переменную, присвоив ей какое-либо
имя и далее обращаться к ней по имени. Например, вы можете создать переменную с
именем ClickCount и сохранять в ней количество щелчков пользователя по отдельной
веб-странице. Вам нет необходимости знать, где именно в памяти компьютера
хранится это значение. Вам достаточно помнить имя переменной, которое используется
в качестве ссылки на область памяти. Используя это имя вы можете получить или
изменить хранящееся в памяти значение. В VBScript все переменный имеют тип
Variant (см. раздел
«Типы данных VBScript»).
Объявление переменных
Для явного объявления переменной в вашем скрипте используйте операторы
Dim, Public или Private. Например:
Dim DegreesFahrenheit
Чтобы объявить несколько переменных, разделяйте их запятой, например:
Dim Top, Bottom, Left, Right
Несколько переменных можно также объявить в нескольких строках:
Dim Top 'Верхняя координата окна
Dim Bottom 'Нижняя координата окна
Dim Left 'Левая координата окна
Dim Right 'Правая координата окна
Этот вариант более удобен в тех случаях, когда требуется разместить комментарий для каждой переменной.
Вы можете также объявить переменную неявно, используя её имя в любом месте вашего сценария.
Неявное объявление — это когда вы предварительно не объявляете переменную, а просто вводите
имя переменной в любом месте сценария и используете её. В общем случае это не рекомендуется,
так как это может привести к потенциальным ошибкам в сценарии. Например, вы явно объявили
переменную Top, а затем забыли про это и объявили переменную Top неявно. То есть получится,
что в разных местах сценария вы по разному будете использовать одну и ту же переменную,
что может привести к непредсказуемым последствиям выполнения сценария. Чтобы этого избежать,
рекомендуется использовать оператор Option Explicit, который требует явного объявления всех
переменных. Оператор Option Explicit должен быть первым оператором в вашем сценарии. Два примера:
s = "Test VAR"
MsgBox s
Этот сценарий выполнится без ошибок, хотя переменная s не объявлена явно.
Option Explicit
s = "Test VAR"
MsgBox s
При попытке выполнить этот сценарий произойдёт ошибка, так как переменная s не объявлена (см. рис. 2.1).
Рис. 2.1. Ошибка сценария VBScript.
Таким образом, если вы не хотите случайно использовать неявно объявленные переменные,
то используйте оператор Option Explicit. Случайно можно объявить неявно переменную,
например, из-за опечатки. Допустим, у вас есть явно объявленная переменная Right,
а где-то в тексте сценария вы случайно напечатали вместо слова Right слово Riht.
Если вы не использовали оператор Option Explicit, то это не будет считаться ошибкой,
так как Riht будет расцениваться как неявно объявленная переменная. Однако результат
выполнения такого сценария будет непредсказуем, так как написав Riht, вы подразумевали
Right, но не заметили этой опечатки и свято верите в то, что присвоили значение
переменной Right, хотя на самом деле это была переменная Riht.
Правила именования переменных
При именовании переменных следует выполнять стандартные правила именования всех идентификаторов в VBScript. Имя переменной:
- Должно начинаться с буквы
- Не должно содержать даты и времени
- Не должно превышать 255 символов
- Должно быть уникальным в пределах области, где оно объявлено
Область видимости и время жизни переменных
Область видимости — это границы, в которых объявленную в этих
границах переменной можно использовать. Например, переменную, явно объявленную в
процедуре, можно использовать только в этой процедуре. Такая переменная является
локальной и называется переменной уровня процедуры. Если вы объявляете переменную
вне процедуры, то такая переменная видна из любого места сценария. Это
переменная является глобальной и называется переменной уровня сценария.
Время жизни переменной — это время, в течение которого
существует переменная. Время жизни переменной уровня сценария начинается с
момента её объявления и длится до окончания выполнения сценария. Время жизни
переменной уровня процедуры начинается с момента вызова процедуры и продолжается
до окончания выполнения процедуры. При выходе из процедуры локальная переменная
уничтожается. Использование локальных переменных позволяет экономить память компьютера.
Локальные переменные могут иметь такие же имена, как глобальные. В этом случае
в процедуре используется локальная переменная, а в других местах сценария
используется глобальная переменная.
Присваивание значений переменным
Для присваивания значения переменной используется выражение следующего вида
(слева находится имя переменной, справа — присваиваемое значение):
B = 200
После выполнения этого кода переменной В будет присвоено значение 200.
В качестве операнда присваивания используется символ «=».
Скалярные переменные и массивы
Наиболее часто вам приходится присваивать значения одиночным переменным.
Переменная, содержащая одно значение — это скалярная переменная.
Но также часто требуется записать в одну переменную несколько значений.
Для такого случая вы можете создать переменную, содержащую последовательность значений.
Такая переменная называется массив. Массивы и скалярные переменные
объявляются одинаково, за исключением того, что при объявлении массива после
имени переменной используются круглые скобки. В следующем примере объявлен массив А,
содержащий 11 элементов:
Dim А(10)
Здесь в круглых скобках находится число 10, хотя, как уже говорилось, объявлен
массив из 11 элементов. Это объясняется тем, что нумерация всех массивов в VBScript
начинается с 0, а не с 1. То есть при объявлении массива в круглых скобках вам
требуется всегда указывать количество элементов минус 1. Объявленный таким
образом массив называется
массив с фиксированным количеством элементов.
Значение каждому элемента массива присваивается с использованием индекса
элемента массива. В нашем примере каждому (из 11) элементу массива от 0 до 10
может быть присвоено значение следующим образом:
A(0) = 256
A(1) = 324
A(2) = 100
. . .
A(10) = 55
Подобным образом можно получить данные из массива:
. . .
SomeVariable = A(8)
. . .
Массивы не ограничиваются одним измерением. Вы можете использовать в массивах до
60 измерений, несмотря на то, что люди не могут воспринимать более 3 или 4 измерений.
При объявлении массива с несколькими измерениями количество элементов для каждого
измерения отделяется запятой. В следующем примере объявлен массив, который
представляет собой таблицу значений из 6 строк и 11 столбцов:
Dim MyTable(5, 10)
В двумерном массиве первое число — это количество строк, второе — количество столбцов.
Вы можете также объявлять массивы, размер которых может изменяться во время
выполнения сценария. Такой массив называется динамический массив. Динамический
массив объявляется с использованием любого из операторов Dim или
ReDim. Однако для динамического массива не указывается количество
измерений и элементов в круглых скобках. Например:
Dim MyArray()
ReDim AnotherArray()
В последствии для использования динамического массива вы должны использовать оператор
ReDim для определения количества измерений и элементов в каждом измерении.
В следующем примере вначале устанавливается размер массива, равный 25. Затем размер
массива изменяется на 30, но используется ключевое слово
Preserve,
чтобы сохранить уже имеющиеся в массиве данные. Если это слово не использовать,
то все имеющиеся в массиве данные при изменении размера будут утеряны.
ReDim MyArray(25)
. . .
ReDim Preserve MyArray(30)
Вы можете изменять размер массива неограниченное количество раз, однако вы должны знать,
что при уменьшении размера массива вы потеряете данные, которые находятся в исключённых элементах.