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 的 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 value) 更改为函数 returnResult(ByVal value)

步骤4) 现在你的输出将是 5。

常见问题

在子程序中使用 `Exit Sub`,或在函数中使用 `Exit Function`,可以在过程结束前立即退出。程序执行将返回到调用该函数的行。

如果使用 `call` 关键字,请将参数用括号括起来。如果省略 `call`,则多个参数之间无需使用括号。这是 VBScript 中常见的语法错误。

是的。VBScript 子程序或函数可以调用自身,这称为递归。务必包含一个终止调用的基本条件,否则脚本会一直循环直到堆栈空间耗尽。

是的。人工智能可以识别重复的语句,例如……trac将它们放入带有正确参数的子程序或函数中,并更新调用。这样可以缩短脚本长度,使其更易于维护。

是的,人工智能可以 trac例如,如何通过 ByRef 和 ByVal 改变值,分别显示输出结果,并根据调用者是否应该看到更改来推荐使用哪种方式。

总结一下这篇文章: