VBScript-funktioner och -procedurer med exempel

โšก Smart sammanfattning

VBScript-funktioner och -procedurer organiserar kod i รฅteranvรคndbara block. En subprocedur kรถr satser utan att returnera ett vรคrde, medan en funktionsprocedur returnerar ett vรคrde genom att tilldela det till funktionsnamnet, och argument skickas med hjรคlp av ByRef eller ByVal.

  • ๐Ÿงฑ Code ร…teranvรคndning: Procedurer modulariserar kod sรฅ att det รคr enklare att skriva, felsรถka och underhรฅlla รถver stora skript.
  • ๐Ÿ“ค Delprocedur: En Sub kรถr ett block med programsatser mellan Sub och End Sub men returnerar inget vรคrde.
  • ๐Ÿ“ฅ Funktionsprocedur: En funktion returnerar ett vรคrde genom att tilldela det till funktionsnamnet mellan Function och End Function.
  • ๐Ÿ“ž Kallelse: Anvรคnd nyckelordet call fรถr att kรถra en Sub och anvรคnd en funktions namn i ett uttryck fรถr att fรฅ dess resultat.
  • ๐Ÿ” ByRef kontra ByVal: ByRef lรฅter รคndringar behรฅllas efter anropet; ByVal arbetar pรฅ en kopia, sรฅ รคndringarna behรฅlls inte.
  • โš™๏ธ Standardgodkรคnnande: VBScript skickar argument via referens som standard om du inte anger ByVal.

VBScript-funktioner och procedurer

VBScript-procedurer

VBScript-procedurer anvรคnds frรคmst fรถr kodorganisation och รฅteranvรคndning. Vi har anvรคnt enkla exempel hittills eftersom syftet hรคr รคr att lรคra sig VBScript. Men i verkliga scenarier รคr koden inte sรฅ enkel. Nรคr du fรถrsรถker implementera nรฅgot som รคr anvรคndbart kan koden bli mer komplex. Det kan finnas hundratals rader som strรคcker sig รถver mรฅnga sidor.

Om du inte organiserar koden ordentligt kommer hela processen med kodning, felsรถkning och hantering av koden att bli riktigt komplex. Sรฅ du bรถr organisera eller modularisera koden noggrant sรฅ att din kod blir lรคtthanterlig.

Anta dessutom att du har en uppsรคttning uttalanden som utfรถr en viss รฅtgรคrd. Du vill att samma รฅtgรคrd ska upprepas flera gรฅnger. Varfรถr ska du dรฅ skriva samma kod om och om igen? Genom att anvรคnda effektiva tekniker kan du gรถra din kod รฅteranvรคndbar. Detta kommer att hjรคlpa utvecklarna att organisera koden vackert och testarna att enkelt identifiera buggar. Kort sagt, kodmodularisering och รฅteranvรคndning รคr mycket viktigt fรถr att gรถra koden mer kraftfull, pรฅlitlig och lรคttare att underhรฅlla. Hรคr kommer procedurer in i bilden.

Typer av procedurer i VBScript

En procedur รคr ett kodblock som helst utfรถr en enda funktion. Ett kodblock som bearbetar en indata eller hanterar en fil รคr ett bra exempel pรฅ en funktion. Det finns tvรฅ typer av procedurer i VBScript.

  1. Underprocedur: Underproceduren returnerar inget vรคrde.
  2. Funktionsprocedur: Funktionsproceduren anvรคnds om du vill returnera ett vรคrde.

Underrutiner

Om du vill kรถra en serie satser utan att returnera nรฅgot vรคrde kan du anvรคnda underprocedurer.

Underprocedurer bรถrjar och slutar med Sub- respektive End Sub-satser. Underprocedurer kan ta argument, men kan inte returnera ett vรคrde. Underprocedurer kan ta input eller inte.

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

Att bara skriva den hรคr koden kommer inte att mata ut nรฅgonting. Hรคr har du skapat en underprocedur som heter outputMessage. Dรคrefter mรฅste du ringa det.

anrop outputMessage()

Kombinera bรฅda dessa uppsรคttningar koder inuti tag like this.

<script type="text/vbscript">

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

Utdata frรฅn denna kod kommer att vara

Underrutiner

VBScript-funktioner

Om du vill exekvera en serie satser och returnera ett vรคrde, mรฅste du anvรคnda funktionsprocedurer, allmรคnt kรคnd som funktion.

Funktionsprocedurer bรถrjar och slutar med funktions- respektive slutfunktionssatser.

En funktionsprocedur kan ta input eller inte.

Funktionsprocedurer returnerar ett vรคrde genom att tilldela vรคrdet till dess namn.

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

Utdata frรฅn denna kod kommer att vara

VBScript-funktioner

ByRef och ByVal parametrar

Du kan skicka VBScript-argument till procedurerna genom referens eller vรคrde.

Om du inte anger nรฅgot nรคr du anropar en procedur, skickas argumentet/argumenten som standard som referens.

Om du รคndrar argumenten fรถr att kvarstรฅ รคven efter att proceduren har anropats, mรฅste du skicka VBScript-argumenten genom referens.

Nรคr ett argument skickas av vรคrde, รคndras alla รคndringar som den anropade proceduren gรถr i vรคrdet av variabel kvarstรฅr inte efter att proceduren har anropats.

Nyckelorden ByRef och ByVal anvรคnds fรถr att skicka argument genom referens respektive vรคrde.

Fรถr att fรถrstรฅ skillnaden, kรถr fรถrst koden nedan och se utdata.

Steg 1) Kopiera koden till din 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>

Steg 2) utgรฅngen รคr 6.

Steg 3) ร„ndra funktion returnResult(ByRef value) till Function returnResult(ByVal value)

Steg 4) Nu blir din produktion 5.

Vanliga frรฅgor

Anvรคnd Exit Sub inuti en Sub, eller Exit Function inuti en Function, fรถr att avsluta proceduren omedelbart fรถre slutet. Exekveringen รฅtergรฅr dรฅ till raden som anropade den.

Om du anvรคnder nyckelordet call, radbryt argumenten inom parenteser. Om du utelรคmnar call, anvรคnd inte parenteser runt flera argument. Att gรถra detta fel รคr ett vanligt syntaxfel i VBScript.

Ja. En VBScript-underfunktion eller funktion kan anropa sig sjรคlv, vilket kallas rekursion. Inkludera alltid ett grundvillkor som stoppar anropen, annars loopar skriptet tills det fรฅr slut pรฅ stackutrymme.

Ja. AI kan upptรคcka dubbletter av uttalanden, t.ex.tracLรคgg in dem i en Sub eller Function med rรคtt parametrar och uppdatera anropen. Detta gรถr skript kortare och enklare att underhรฅlla.

Ja. AI kan trace hur ett vรคrde รคndras med ByRef kontra ByVal, visa utdata fรถr varje vรคrde och rekommendera vilket som ska anvรคndas baserat pรฅ om anroparen ska se รคndringen.

Sammanfatta detta inlรคgg med: