检查子或函数是否存在

Vix*_*xed 6 vbscript asp-classic

有没有办法检查子或函数是否存在?

sub mySub()
 'some code
end sub
Run Code Online (Sandbox Code Playgroud)

就像是 if exist(mySub)

Lan*_*art 9

更新:

所以我知道有一个更好的方法来做这个并且它正在使用 GetRef()

Function Exist(procName)
    On Error Resume Next
    Dim proc: Set proc = GetRef(procName)
    Exist = (Not proc Is Nothing)
End Function

Function Hello()
    WScript.Echo "Hello Ran"
End Function

If Exist("test") Then  'Returns False (0)
    WScript.Echo "Test Exists"
Else
    WScript.Echo "Test Doesn't Exist"
End If

If Exist("Hello") Then  'Returns True (-1)
    WScript.Echo "Hello Exists"
Else
    WScript.Echo "Hello Doesn't Exist"
End If
Run Code Online (Sandbox Code Playgroud)

产量

Test Doesn't Exist
Hello Exists

VBScript没有内置任何东西可以做到这一点,但你可以使用On Error Resume Next和构建一些东西ExecuteGlobal().

Function Exist(procName)
    On Error Resume Next
    ExecuteGlobal "Call " & procName & "()"
    Exists = (Err.Number = 0)
End Function

Function Hello()
    WScript.Echo "Hello Ran"
End Function

If Exist("test") Then  'Returns False (0)
    WScript.Echo "Test Exists"
Else
    WScript.Echo "Test Doesn't Exist"
End If

If Exist("hello") Then  'Returns True (-1)
    WScript.Echo "Test Exists"
Else
    WScript.Echo "Test Doesn't Exist"
End If
Run Code Online (Sandbox Code Playgroud)

产量

Test Doesn't Exist
Hello Ran
Test Doesn't Exist

使用这种方法的缺点是,如果它存在,它实际上运行该过程.