当传递给程序时,ByRef在vbscript中的含义是什么?

时间:2012-02-27 19:16:26

标签: asp-classic vbscript byref

我开始进行程序调用

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

关于接收我们所拥有的参数的函数..

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

因为我无法找到Order值传递到prodcedure的任何地方。 我是否认为ByRef可以将数据带出程序?使用Order变量名?

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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)

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

那是因为这里相应的函数采用了它的args byREf

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