Vbscript 为什么我用ByVal指定时总是ByRef?
我将讨论ByVal和ByRef,其中提到当我们通过ByVal传递参数时,值总是通过ByVal传递 在我下面的例子中,它总是经过ByRef。我做错了什么Vbscript 为什么我用ByVal指定时总是ByRef?,vbscript,byref,Vbscript,Byref,我将讨论ByVal和ByRef,其中提到当我们通过ByVal传递参数时,值总是通过ByVal传递 在我下面的例子中,它总是经过ByRef。我做错了什么 Function sampleFunction(ByVal val) 'Even though here i am passing as ByVal it is taking as ByRef val=val+1 sampleFunction=val End Function x=50
Function sampleFunction(ByVal val) 'Even though here i am passing as ByVal it is taking as ByRef
val=val+1
sampleFunction=val
End Function
x=50
temp=sampleFunction(x)
msgbox temp 'prints 51
从函数返回时,如何通过ByVal传递参数?您的函数正在接受
50
的值。然后,它将变量val
递增一,使该变量现在为51
。然后将返回值设置为val
的值,即51
因此,您的temp
变量被分配给返回值51。但是,您的x
变量仍将是50
,因为只有值被传递到函数中-未修改x
参数
如果您在此处执行
ByRef
,则x
将为51。您似乎混淆了通过引用传递变量与返回值的概念。如果在sampleFunction
之后调用msgbox x
,它将打印50。