检查变量是否为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
}