VBScript-functies en -procedures met voorbeeld

โšก Slimme samenvatting

VBScript-functies en -procedures organiseren code in herbruikbare blokken. Een Sub-procedure voert instructies uit zonder een waarde terug te geven, terwijl een Function-procedure een waarde teruggeeft door deze toe te wijzen aan de functienaam, en argumenten worden doorgegeven met ByRef of ByVal.

  • ๐Ÿงฑ Code Hergebruik: Procedures modulariseren code, waardoor het gemakkelijker wordt om code te schrijven, te debuggen en te onderhouden, zelfs bij grote scripts.
  • ๐Ÿ“ค Subprocedure: Een Sub voert een blok instructies uit tussen Sub en End Sub, maar retourneert geen waarde.
  • ๐Ÿ“ฅ Functieprocedure: Een functie retourneert een waarde door deze toe te wijzen aan de functienaam tussen `Function` en `EndFunction`.
  • ๐Ÿ“ž Roeping: Gebruik het trefwoord `call` om een โ€‹โ€‹`Sub` uit te voeren en gebruik de naam van een functie in een expressie om het resultaat ervan te verkrijgen.
  • ๐Ÿ” ByRef versus ByVal: ByRef zorgt ervoor dat wijzigingen na de aanroep behouden blijven; ByVal werkt met een kopie, waardoor wijzigingen niet behouden blijven.
  • โš™๏ธ Standaard doorgeefmethode: VBScript geeft argumenten standaard door middel van referentie door, tenzij je ByVal specificeert.

VBScript-functies en -procedures

VBScript-procedures

VBScript-procedures worden voornamelijk gebruikt voor code-organisatie en hergebruik. Tot nu toe hebben we eenvoudige voorbeelden gebruikt, omdat het doel hier is om VBScript te leren. Maar in een real-world scenario is de code niet zo eenvoudig. Wanneer u iets probeert te implementeren dat nuttig is, kan de code complexer worden. Er kunnen honderden regels zijn die zich over meerdere pagina's uitstrekken.

Als u de code niet goed organiseert, wordt het hele proces van coderen, debuggen en beheren van de code erg complex. U moet de code dus zorgvuldig organiseren of modulariseren, zodat uw code gemakkelijk beheersbaar wordt.

Stel bovendien dat u een reeks instructies heeft die een bepaalde actie uitvoeren. U wilt dat dezelfde actie meerdere keren wordt herhaald. Waarom zou je dan steeds opnieuw dezelfde code schrijven? Door effectieve technieken te gebruiken, kunt u uw code herbruikbaar maken. Dit zal de ontwikkelaars helpen de code mooi te organiseren en de testers om bugs gemakkelijk te identificeren. Kortom, codemodularisatie en hergebruik zijn erg belangrijk om de code krachtiger, betrouwbaarder en gemakkelijker te onderhouden te maken. Hier komen procedures in beeld.

Soorten procedures in VBScript

Een procedure is een codeblok dat idealiter รฉรฉn enkele functie vervult. Een codeblok dat een invoer verwerkt of een bestand afhandelt, is een goed voorbeeld van een functie. Er zijn twee soorten procedures in VBScript.

  1. Subprocedure: De subprocedure retourneert geen waarde.
  2. Functieprocedure: De functieprocedure wordt gebruikt als u een waarde wilt retourneren.

Subprocedures

Als u een reeks instructies wilt uitvoeren zonder enige waarde terug te geven, kunt u subprocedures gebruiken.

Subprocedures beginnen en eindigen met respectievelijk Sub- en End Sub-instructies. Subprocedures kunnen argumenten aannemen, maar kunnen geen waarde retourneren. Subprocedures kunnen al dan niet input vergen.

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

Alleen al het schrijven van deze code levert niets op. Hier hebt u een subprocedure gemaakt met de naam outputMessage. Vervolgens moet je het bellen.

bel uitvoerMessage()

Combineer beide sets codes binnenin tag like this.

<script type="text/vbscript">

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

De uitvoer van deze code zal zijn

Subprocedures

VBScript-functies

Als u een reeks instructies wilt uitvoeren en een waarde wilt retourneren, moet u functieprocedures gebruiken, beter bekend als functie.

Functieprocedures beginnen en eindigen met respectievelijk Function- en End Function-instructies.

Een functieprocedure kan al dan niet invoer vereisen.

Functieprocedures retourneren een waarde door de waarde aan de naam toe te wijzen.

<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>

De uitvoer van deze code zal zijn

VBScript-functies

ByRef- en ByVal-parameters

U kunt VBScript-argumenten doorgeven aan de procedures via verwijzing of via waarde.

Als u niets opgeeft wanneer u een procedure aanroept, worden de argumenten/argumenten standaard door verwijzing doorgegeven.

Als u de wijzigingen in de argumenten wilt behouden, zelfs nadat de procedure is aangeroepen, moet u de VBScript-argumenten ter referentie doorgeven.

Wanneer een argument op waarde wordt doorgegeven, worden alle wijzigingen die de aangeroepen procedure aanbrengt in de waarde van de variabele blijven niet bestaan โ€‹โ€‹nadat de procedure is aangeroepen.

De trefwoorden ByRef en ByVal worden gebruikt om argumenten respectievelijk door verwijzing en door waarde door te geven.

Om het verschil te begrijpen, voert u eerst de onderstaande code uit en bekijkt u de uitvoer.

Stap 1) Kopieer de code naar uw editor

<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>

Stap 2) de uitvoer is 6.

Stap 3) Wijzig de functie returnResult(ByRef-waarde) in de functie returnResult(ByVal-waarde)

Stap 4) Nu is uw uitvoer 5.

Veelgestelde vragen

Gebruik `Exit Sub` binnen een `Sub` of `Exit Function` binnen een `Function` om de procedure direct voor het einde te verlaten. De uitvoering keert dan terug naar de regel die de procedure heeft aangeroepen.

Als je het trefwoord `call` gebruikt, plaats de argumenten dan tussen haakjes. Als je `call` weglaat, gebruik dan geen haakjes rond meerdere argumenten. Dit is een veelvoorkomende syntaxfout in VBScript.

Ja. Een VBScript Sub of Function kan zichzelf aanroepen, wat recursie wordt genoemd. Voeg altijd een basisvoorwaarde toe die de aanroepen stopt, anders blijft het script in een oneindige lus draaien totdat de stack vol is.

Ja. AI kan dubbele statements herkennen, bijvoorbeeldtracPlaats ze in een subroutine of functie met de juiste parameters en werk de aanroepen bij. Dit maakt scripts korter en gemakkelijker te onderhouden.

Ja. AI kan dat. trace Hoe een waarde verandert met ByRef versus ByVal, toon de uitvoer voor beide en adviseer welke te gebruiken op basis van of de aanroeper de verandering moet zien.

Vat dit bericht samen met: