# IsFunc

如果指定函数在当前作用域内可见, 则返回一个非零数字.

    MinParamsPlus1 := IsFunc(FunctionName)

## 参数

FunctionName

  类型: 字符串

  函数的名称, 检索其参数最少数目. FunctionName 必须明确存在于脚本中, 或为内置函数.

## 返回值

类型: 整数

函数的最少必须参数个数加一的数字(例如函数需要零个参数时返回 1, 有一个必须参数时返回 2, 依此类推). 如果 FunctionName 不是内置的和不显式存在于脚本中(包括通过如 #Include 或非动态调用的库函数), 则返回 0.

## 备注

如果 FunctionName 是一个对象, 则抛出异常. 要确定一个对象是否是可调用的, 请使用以下其中一种方法:

- `Value.HasMethod("Call")` 默认情况下适用于所有的 AutoHotkey 值和对象, 但允许对某些对象或类重写 HasMethod. 对于 COM 对象, 这通常会失败(抛出异常或产生错误的结果), 除非 COM 对象实际上是另一个进程的 AutoHotkey 对象.
- `HasMethod(Value, "Call")` 适用于所有的 AutoHotkey 值和对象, 并且不能被覆盖, 但如果不能确定存在 Call 方法, 将返回 false(例如因为 Value 是一个 COM 对象).

搜索包括调用 IsFunc 的那一行所能看到的所有函数. 例如, 它包括直接嵌套在当前函数内部的函数.

## 相关

动态调用函数, 函数引用, Func 对象, Func, A_ThisFunc

## 示例

报告函数的必选参数的数量.

    count := IsFunc("RegExReplace") ; 任意函数名称.
    if count
        MsgBox "This function exists and has " count-1 " mandatory parameters."
    else
        MsgBox "This function does not exist."

dftg