Vbscript 为什么我用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

我将讨论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
    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。