我开始进行程序调用
strReturn = OrderCreate(strGen8, _
strUID, _
Order, _
boolRecapFlag, _
关于接收我们所拥有的参数的函数..
function OrderCreate(strCoDiv, strUID, byRef Order, boolRecap, strBillFirst, etc.
因为我无法找到Order值传递到prodcedure的任何地方。 我是否认为ByRef可以将数据带出程序?使用Order变量名?
答案 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