检查变量是否属于函数类型

2022-08-29 22:05:18

假设我有任何变量,定义如下:

var a = function() {/* Statements */};

我想要一个函数来检查变量的类型是否与函数类似。即:

function foo(v) {if (v is function type?) {/* do something */}};
foo(a);

如何检查变量的类型是否与上面定义的方式相同?aFunction


答案 1
if (typeof v === 'function') {
    // do something
}

答案 2

当然,下划线的方式更有效率,但是当效率不是问题时,最好的检查方法是写在由@Paul Rosania链接的下划线页面上。

受下划线的启发,最后的 isFunction 函数如下所示:

function isFunction(functionToCheck) {
 return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';
}

注意:此解决方案不适用于异步函数、生成器或代理函数。有关更多最新解决方案,请参阅其他答案。