传递到过程时,ByRef在vbscript中是什么意思



以下是调用的过程的开始

strReturn = OrderCreate(strGen8, _
                        strUID, _
                        Order, _
                        boolRecapFlag, _

在接收参数的函数上。。

function OrderCreate(strCoDiv, strUID, byRef Order, boolRecap, strBillFirst, etc.

因为我在任何地方都找不到Order值被传递到产品中的位置。我是否认为ByRef使数据脱离程序成为可能?使用Order变量名称?

参数可以通过两种方式传递到函数中:通过引用(ByRef)或通过值(ByVal)。在VBScript中,默认方法为ByRef。

通过引用传递值时,传递的是变量在内存中寻址的引用。这意味着,一旦函数存在,在函数中所做的任何更改都将持续存在。它还可以用来帮助控制脚本管理内存的方式,因为存储在变量中的数据在内存中只写一次。

按值传递参数会在新作用域内的内存中创建变量的副本。在新作用域内对此信息所做的更改不会影响其他作用域中的数据。

byRef表示您正在传递对原始变量的引用。因此,如果您更改函数中的值,它会反映回原始

这与byVal不同,后者传递值并生成独立副本。

byref和byval 之间的差异

dim my_org_age,my_wife_org_age
my_org_age = 43
my_wife_org_age = 43
Call make_our_ages_younger(my_org_age, my_wife_org_age)

在上面的sub(注意它甚至不是一个函数!)之后,my_org_age和my_wife_org_age将年轻十岁!

这是因为这里对应的函数通过REf 获取其参数

sub make_our_ages_younger(byref my_age,byref her_age)
    my_age = my_Age-10
    her_age = her_age-10
end sub

现在,如果您删除其中的"byRef"字,然后运行

Call make_our_ages_younger(my_org_age, my_wife_org_age)

你会注意到我们的年龄不会改变。

看看byRef现在做什么有什么不同吗?

HTH

相关内容

  • 没有找到相关文章

最新更新