Функции и процедуры VBScript с примером

⚡ Умное резюме

Функции и процедуры VBScript организуют код в многократно используемые блоки. Процедура Sub выполняет операторы без возврата значения, в то время как процедура Function возвращает значение, присваивая его имени функции, а аргументы передаются с помощью ByRef или ByVal.

  • 🧱 Code Повторное использование: Процедуры обеспечивают модульную структуру кода, что упрощает его написание, отладку и сопровождение в больших скриптах.
  • 📤 Вспомогательная процедура: Подпрограмма (Sub) выполняет блок операторов между Sub и End Sub, но не возвращает значение.
  • 📥 Функциональная процедура: Функция возвращает значение, присваивая его имени функции, указанному между строками Function и End Function.
  • 📞 Вызов: Для запуска подпрограммы используйте ключевое слово `call`, а для получения результата функции используйте её имя в выражении.
  • 🔁 ByRef против ByVal: Метод ByRef позволяет сохранять изменения после вызова; метод ByVal работает с копией, поэтому изменения не сохраняются.
  • ⚙️ Передача по умолчанию: В VBScript по умолчанию аргументы передаются по ссылке, если не указано иное (ByVal).

Функции и процедуры VBScript

Процедуры VBScript

Процедуры VBScript используются в основном для организации и повторного использования кода. До сих пор мы использовали простые примеры, поскольку здесь целью является изучение VBScript. Но в реальном сценарии код не так прост. Когда вы пытаетесь реализовать что-то полезное, код может стать более сложным. На многих страницах могут быть сотни строк.

Если вы не организуете код должным образом, весь процесс кодирования, отладки и управления кодом станет действительно сложным. Поэтому вам следует тщательно организовывать или модулировать код, чтобы вашим кодом было легко управлять.

Более того, предположим, что у вас есть набор операторов, выполняющих определенное действие. Вы хотите, чтобы одно и то же действие повторялось несколько раз. Тогда зачем вам писать один и тот же код снова и снова? Используя эффективные методы, вы можете сделать свой код пригодным для повторного использования. Это поможет разработчикам красиво организовать код, а тестировщикам легко выявлять ошибки. Короче говоря, модульность и повторное использование кода очень важны для того, чтобы сделать код более мощным, надежным и простым в обслуживании. Здесь представлены процедуры.

Типы процедур в VBScript

Процедура — это блок кода, который в идеале выполняет одну функцию. Блок кода, который обрабатывает входные данные или файл, является хорошим примером функции. Существует два типа процедур в VBScript.

  1. Подпроцедура: Подпроцедура не возвращает значение.
  2. Функциональная процедура: Функциональная процедура используется, если вы хотите вернуть значение.

Подпроцедуры

Если вы хотите выполнить серию операторов, не возвращая никакого значения, вы можете использовать подпроцедуры.

Подпроцедуры начинаются и заканчиваются операторами Sub и End Sub соответственно. Подпроцедуры могут принимать аргументы, но не могут возвращать значения. Подпроцедуры могут принимать или не принимать входные данные.

Sub outputMessage()
document.write("Welcome")
End Sub

Просто написание этого кода ничего не выведет. Здесь вы создали подпроцедуру с именем outputMessage. Далее вам нужно позвонить ему.

вызвать выходное сообщение()

Объедините оба этих набора кодов внутри tag like this.

<script type="text/vbscript">

Sub outputMessage()
document.write("Welcome")
End Sub
call outputMessage()
</script>

Результатом этого кода будет

Подпроцедуры

Функции VBScript

Если вы хотите выполнить серию операторов и вернуть значение, вам необходимо использовать функциональные процедуры, широко известные как функции.

Процедуры функций начинаются и заканчиваются операторами Function и End Function соответственно.

Функциональная процедура может принимать или не принимать входные данные.

Процедуры функции возвращают значение, присваивая значение его имени.

<script type="text/vbscript">
Function findArea(radius)
   const pi=3.14
   area = pi*radius*radius
   findArea = area
End Function
document.write("The area of the circle when the radius is 20 is " & findArea(20) &"<br/>")
document.write("The area of the circle when the radius is 10 is " & findArea(10))

</script>

Результатом этого кода будет

Функции VBScript

Параметры ByRef и ByVal

Аргументы VBScript можно передавать процедурам по ссылке или по значению.

Если вы ничего не указываете при вызове процедуры, то аргумент/аргументы по умолчанию передаются по ссылке.

Если вы хотите, чтобы изменения, внесенные в аргументы, сохранялись даже после вызова процедуры, вам необходимо передать аргументы VBScript по ссылке.

Когда аргумент передается по значению, любые изменения, вносимые вызываемой процедурой в значение аргумента, переменная не сохраняться после вызова процедуры.

Ключевые слова ByRef и ByVal используются для передачи аргументов по ссылке и по значению соответственно.

Чтобы понять разницу, сначала выполните приведенный ниже код и посмотрите результат.

Шаг 1) Скопируйте код в ваш редактор

<script type="text/vbscript">
Function returnResult(ByRef value)
   value = value +1
   returnResult = value
End Function
Dim x
x=5
call returnResult(x)
document.write(x)
</script>

Шаг 2) выход 6.

Шаг 3) Измените функцию returnResult (значение ByRef) на функцию returnResult (значение ByVal)

Шаг 4) Теперь ваш результат будет 5.

Часто задаваемые вопросы (FAQ)

Используйте Exit Sub внутри Sub или Exit Function внутри Function, чтобы завершить процедуру непосредственно перед её завершением. В этом случае выполнение вернётся к строке, которая её вызвала.

Если вы используете ключевое слово `call`, заключите аргументы в скобки. Если вы опускаете `call`, не используйте скобки для нескольких аргументов. Это распространенная синтаксическая ошибка в VBScript.

Да. Подпрограмма или функция VBScript может вызывать саму себя, это называется рекурсией. Всегда включайте базовое условие, которое останавливает вызовы, иначе скрипт будет зацикливаться, пока не закончится место в стеке.

Да. Искусственный интеллект может обнаруживать повторяющиеся утверждения, например.tracПреобразуйте их в подпрограмму или функцию с соответствующими параметрами и обновите вызовы. Это делает скрипты короче и проще в обслуживании.

Да. Искусственный интеллект может. tracПокажите, как изменяется значение при использовании ByRef и ByVal, отобразите результат для каждого варианта и порекомендуйте, какой из них использовать в зависимости от того, должен ли вызывающий код видеть это изменение.

Подведем итог этой публикации следующим образом: