【问题标题】:The best way to check if a variable is a function in javascript [duplicate]检查变量是否是javascript中的函数的最佳方法[重复]
【发布时间】:2015-05-30 13:59:42
【问题描述】:

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

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]);
}

【问题讨论】:

  • 就像if(typeof cb == 'function') { ... }一样简单

标签: javascript


【解决方案1】:

最常见的方法是使用:

(typeof foo === 'function')

但如果你想匹配类似函数的对象(不常见,但可能很有用),你可以检查该对象是否可调用:

(foo && foo.call && foo.apply)

在大多数情况下,你也可以测试构造函数(非常类似于typeof):

(foo.constructor === Function)

如果你想引发异常,你总是可以:

try {
  foo();
} catch (e) {
  // TypeError: foo is not a function
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 2015-11-03
      • 1970-01-01
      • 2012-05-23
      • 2017-08-23
      • 1970-01-01
      • 2013-08-01
      • 2016-03-11
      • 2012-07-22
      相关资源
      最近更新 更多