以下是调用的过程的开始
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