检查变量是否为javascript中的函数的最佳方法

检查变量是否为javascript中的函数的最佳方法,javascript,Javascript,检查变量是否为函数的最佳方法是什么 var cb = function () { return; } if (!!(cb && cb.constructor && cb.apply)) { cb.apply(somevar, [err, res]); } //VS if (!!(cb && 'function' === typeof cb) { cb.apply(somevar, [err, res]); } 我会说第二个,因为它是

检查变量是否为函数的最佳方法是什么

var cb = function () {
  return;
}

if (!!(cb && cb.constructor && cb.apply)) {
  cb.apply(somevar, [err, res]);
}
//VS
if (!!(cb && 'function' === typeof cb) {
  cb.apply(somevar, [err, res]);
}

我会说第二个,因为它是最简单、最直观、最有效的方法。

最常用的方法是使用:

(typeof foo === 'function')
但是,如果要匹配类似函数的对象(虽然不常见,但可能很有用),可以检查该对象是否可调用:

(foo && foo.call && foo.apply)
在大多数情况下,您还可以测试构造函数(非常类似于
typeof
):

如果您想引发异常,您可以始终:

try {
  foo();
} catch (e) {
  // TypeError: foo is not a function
}
就像
if(typeof cb=='function'){…}
try {
  foo();
} catch (e) {
  // TypeError: foo is not a function
}