VBScript 함수 및 절차(예제 포함)

⚡ 스마트 요약

VBScript 함수와 프로시저는 코드를 재사용 가능한 블록으로 구성합니다. Sub 프로시저는 값을 반환하지 않고 문장을 실행하는 반면, Function 프로시저는 함수 이름에 값을 할당하여 값을 반환하고, ByRef 또는 ByVal을 사용하여 인수를 전달합니다.

  • 🧱 Code 재사용 : 프로시저는 코드를 모듈화하여 대규모 스크립트 전반에 걸쳐 작성, 디버깅 및 유지 관리를 더 쉽게 만듭니다.
  • 📤 하위 절차: Sub는 Sub와 End Sub 사이에 일련의 명령문을 실행하지만 값을 반환하지는 않습니다.
  • 📥 함수 절차: 함수는 Function과 End Function 사이에 함수 이름을 넣어 값을 반환합니다.
  • 📞 부름: `call` 키워드를 사용하여 서브루틴을 실행하고, 표현식에서 함수의 이름을 사용하여 결과를 얻습니다.
  • 🔁 ByRef vs ByVal: ByRef를 사용하면 호출 후에도 변경 사항이 유지되지만, ByVal은 복사본을 기반으로 작동하므로 변경 사항이 유지되지 않습니다.
  • ⚙️ 기본 전달: VBScript는 ByVal을 지정하지 않는 한 기본적으로 인수를 참조로 전달합니다.

VBScript 함수 및 프로시저

VBScript 절차

VBScript 프로시저는 주로 코드 구성 및 재사용에 사용됩니다. 지금까지는 간단한 예를 사용했는데, 여기서는 VBScript를 배우는 것이 목적이기 때문입니다. 하지만 실제 상황에서는 코드가 그렇게 간단하지 않습니다. 유용한 것을 구현하려고 하면 코드가 더 복잡해질 수 있습니다. 여러 페이지에 걸쳐 수백 줄이 될 수 있습니다.

코드를 제대로 정리하지 않으면 코드 코딩, 디버깅, 관리의 전체 프로세스가 정말 복잡해집니다. 따라서 코드를 쉽게 관리할 수 있도록 코드를 신중하게 정리하거나 모듈화해야 합니다.

또한 특정 작업을 수행하는 명령문 세트가 있다고 가정해 보겠습니다. 동일한 작업이 여러 번 반복되기를 원합니다. 그렇다면 왜 같은 코드를 계속해서 작성해야 할까요? 효과적인 기술을 사용하면 코드를 재사용 가능하게 만들 수 있습니다. 이는 개발자가 코드를 아름답게 구성하고 테스터가 버그를 쉽게 식별하는 데 도움이 됩니다. 즉, 코드를 더욱 강력하고 안정적이며 유지 관리하기 쉽게 만들기 위해서는 코드 모듈화 및 재사용이 매우 중요합니다. 여기에 절차가 그림으로 표시됩니다.

VBScript의 프로시저 유형

프로시저는 단일 기능을 이상적으로 수행하는 코드 블록입니다. 입력을 처리하거나 파일을 처리하는 코드 블록은 함수의 좋은 예입니다. 에는 두 가지 유형의 절차가 있습니다. Vbscript.

  1. 하위 프로시저: 하위 프로시저는 값을 반환하지 않습니다.
  2. 함수 프로시저: 값을 반환하려는 경우 함수 프로시저가 사용됩니다.

하위 절차

값을 반환하지 않고 일련의 문을 실행하려면 하위 프로시저를 사용할 수 있습니다.

Sub 프로시저는 각각 Sub 및 End Sub 문으로 시작하고 끝납니다. 하위 프로시저는 인수를 사용할 수 있지만 값을 반환할 수는 없습니다. 하위 프로시저는 입력을 받을 수도 있고 받지 않을 수도 있습니다.

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

이 코드를 작성하는 것만으로는 아무것도 출력되지 않습니다. 여기서는 outputMessage라는 Sub 프로시저를 만들었습니다. 다음으로 전화해야합니다.

출력 메시지() 호출

이 두 코드 세트를 내부에 결합하십시오. tag like this.

<script type="text/vbscript">

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

이 코드의 출력은 다음과 같습니다.

하위 절차

VB스크립트 기능

일련의 문을 실행하고 값을 반환하려면 일반적으로 함수라고 알려진 함수 프로시저를 사용해야 합니다.

함수 프로시저는 각각 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>

이 코드의 출력은 다음과 같습니다.

VB스크립트 기능

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`를 사용하거나 함수 내부에서 `Exit Function`을 사용하면 프로시저가 끝나기 직전에 종료됩니다. 그러면 실행은 해당 프로시저를 호출한 줄로 돌아갑니다.

`call` 키워드를 사용하는 경우 인수를 괄호로 묶어야 합니다. `call` 키워드를 생략하는 경우에는 여러 인수를 괄호로 묶지 않아도 됩니다. 이 부분을 잘못 이해하는 것이 VBScript 구문 오류 중 하나입니다.

네. VBScript 서브루틴이나 함수는 자기 자신을 호출할 수 있는데, 이를 재귀라고 합니다. 호출을 중지하는 기본 조건을 항상 포함해야 합니다. 그렇지 않으면 스택 공간이 부족해질 때까지 스크립트가 무한 루프에 빠지게 됩니다.

네. AI는 중복된 문장을 찾아낼 수 있습니다. 예를 들면...trac해당 메서드들을 적절한 매개변수를 가진 서브루틴이나 함수로 만들고 호출 부분을 업데이트하세요. 이렇게 하면 스크립트가 더 간결해지고 유지 관리가 쉬워집니다.

네. AI는 할 수 있습니다. tracByRef와 ByVal을 사용하여 값이 어떻게 변하는지 비교하고, 각각의 출력 결과를 보여주며, 호출자가 변경 사항을 확인해야 하는지 여부에 따라 어떤 방법을 사용하는 것이 더 나은지 권장합니다.

이 게시물을 요약하면 다음과 같습니다.