Функції та процедури VBScript із прикладом

⚡ Розумний підсумок

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

  • 🧱 Code Повторне використання: Процедури модулюють код, що спрощує написання, налагодження та підтримку великих скриптів.
  • 📤 Підпроцедура: Sub виконує блок операторів між Sub та End Sub, але не повертає значення.
  • 📥 Процедура виконання функції: Функція повертає значення, присвойуючи його імені функції між Function та End Function.
  • 📞 Дзвінки: Використовуйте ключове слово call для запуску Sub, а назву функції (function) у виразі використовуйте для отримання її результату.
  • 🔁 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. Далі його потрібно викликати.

викликати 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.

Поширені запитання

Використовуйте Exit Sub всередині Sub або Exit Function всередині Function, щоб вийти з процедури безпосередньо перед її завершенням. Після цього виконання повертається до рядка, який її викликав.

Якщо ви використовуєте ключове слово call, візьміть аргументи в дужки. Якщо ви пропускаєте call, не використовуйте дужки навколо кількох аргументів. Ця помилка є поширеною синтаксичною помилкою VBScript.

Так. Підпрограма або функція VBScript може викликати саму себе, що називається рекурсією. Завжди додавайте базову умову, яка зупиняє виклики, інакше скрипт буде виконуватися зациклено, доки не закінчиться місце в стеку.

Так. Штучний інтелект може виявляти дублікати тверджень, наприкладtracперетворити їх на підклас або функцію з правильними параметрами та оновити виклики. Це робить скрипти коротшими та простішими в обслуговуванні.

Так. Штучний інтелект може tracяк змінюється значення за допомогою ByRef та ByVal, покажіть вивід для кожного з них та порекомендуйте, який із них використовувати залежно від того, чи повинен абонент бачити зміну.

Підсумуйте цей пост за допомогою: