В этой статье мы изучим переменные vbscript языка, рассмотрим способы их объявления – явный (с помощью оператора dim) и неявный, ограничения, которые накладываются на переменные в сценариях, как определяется их сфера влияния (глобальные и локальные vbscript переменные), ну, и естественно, напишем несколько простых примеров для лучшего понимания.
И так, давайте начнём. Сначала, рассмотрим основные ограничения, которые распространяются на переменные в vbscript сценариях:
- Имя должно начинаться с латинской буквы;
- В имени нельзя использовать пробелы;
- Ограничение на длину составляет не больше 255 знаков;
- Нельзя использовать в качестве имени ключевые слова;
Хорошо, теперь давайте рассмотрим процесс явного и неявного объявления переменных, напишем простенький vbs скрипт:
'*********************************** ' variable.vbs ' переменные vbscript '*********************************** dim var_a,var_123 var_123=222 var_a="строка" var_date = #12/05/2013# MsgBox("1 var_a: " & var_a) MsgBox("2 var_123: " & var_123) MsgBox("3 var_date: " & var_date) dim a a=33333 MsgBox("4 a: " & a) b=9.5 MsgBox("5 b: " & b) |
Сначала с помощью ключевого слова dim мы объявляем две переменные: var_a и var_123, далее им присваиваем значения, первой – число, а второй – строку, var_date – присвоено значение типа Дата, признаком является символ решётки, данная vbscript переменная объявлена не явно, так как не используется ключевое слово Dim. С помощью встроенной функции MsgBox можно произвести вывод значения, которое хранится в наших переменных. Далее мы снова производим явное объявление с помощью ключевого слова dim переменной a, выводим ее значение и производим неявное объявление для b, выводим значение.
С точки зрения программирования, данный сценарий содержит следующие недочёты:
- Переменные, объявленные не явно, могут сильно запутать понимание кода;
- Лучше всего производить объявление вначале сценария;
Теперь давайте рассмотрим этот же сценарий, но написанный по-другому:
'*********************************** ' variable_1.vbs ' переменные vbscript '*********************************** Option Explicit dim var_123, var_a, var_date, a, b 'Присваиваем значения var_123=222 var_a="строка" var_date = #12/05/2013# a=33333 b=9.5 'выводим значения MsgBox("1 var_a: " & var_a):MsgBox("2 var_123: " & var_123) MsgBox("3 var_date: " & var_date):MsgBox("4 a: " & a):MsgBox("5 b: " & b) |
Тут мы использовали конструкцию Option Explicit языка VBScript, которая запрещает использовать в сценарии переменные, объявленные неявным способом (без ключевого слова dim). Также, мы видим, что язык VBScript позволяет выводить в одну строку несколько операторов, разделителем служит двоеточие.
Хорошо, теперь давайте рассмотрим сферу влияния (область видимости), для этого напишем простой скрипт:
'*********************************** ' variable_2.vbs 'переменные vbscript и их сфера влияния '*********************************** Option Explicit dim var_1, var_2 var_1 = "первая глобальна переменная vbscript" var_2 = "вторая глобальна переменная vbscript" Function my_function_1() dim var_1 var_1 = "первая локальная переменная в vbs " my_function_1 = var_1 End Function Function my_function_2() dim var_1 var_1=var_2 my_function_2 = var_1 End Function 'происходит переопределение Function my_function_3() var_1 = "вторая локальная переменная в vbs" my_function_3 = var_1 End Function 'происходит переопределение Function my_function_4() var_1=var_1 my_function_4 = var_1 End Function ' Производим вывод данных MsgBox(var_1) MsgBox(my_function_1) MsgBox(my_function_2) MsgBox(my_function_3) MsgBox(my_function_4) MsgBox(var_1) |
Вначале с помощью ключевого слова dim мы объявили var_1 и var_2 – они являются глобальными, то есть, доступны из любого места в сценарии. Далее прописали четыре пользовательские функции, функция будет возвращать то значение, которое присвоено ее имени (my_function_1 = var_1, my_function_2 = var_1,…),:
- my_function_1 – будет возвращать значение уже локальной переменной vbscript – var_1.
- my_function_2 – тут мы локальной переменной var_1 присвоили значение глобальной var_2.
- my_function_3 – тут мы неявно допускаем ошибку программирования, так как ключевое слово dim не используется, то мы переопределяем значение глобальной var_1.
- my_function_4 – тут вопреки логике, значение var_1 будет ровно не «первая глобальна переменная vbscript», а «вторая локальная переменная vbscript», так как мы изменили глобальное значение из тела функции my_function_3.
Помимо строковых и числовых данных, переменной можно присвоить дату – для этого используется символ решетки (#) вместо кавычек, и формат вида месяц/день/год. Помимо этого можно использовать 16-ричные значения, перед значением ставится &H, а если 8-ричное значение, то — &O.