_.isFunction(a)与a的类型===';函数';?javascript

_.isFunction(a)与a的类型===';函数';?javascript,javascript,performance,underscore.js,typeof,Javascript,Performance,Underscore.js,Typeof,我认为这可能是唯一的性能案例- 而且似乎typeof的速度更快。。所以我的问题是-哪个更适合使用?没有理由不使用typeof 它不仅更快,而且确保所有函数都有一种类型的“函数”,并且只有函数才能有一种类型的“函数”: 此运算符专门用于获取值的类型,因此为什么不使用它?首先,下划线不再使用该实现。它优化为typeof,除非typeof/返回函数,至少在 您可以在源代码中找到: 新的jsperf: 它在FF中仍然显示出相当高的性能(但远低于您在问题中发布的幼稚实现),这是由于函数调用的开销而不是内

我认为这可能是唯一的性能案例-


而且似乎
typeof
的速度更快。。所以我的问题是-哪个更适合使用?

没有理由不使用
typeof

它不仅更快,而且确保所有函数都有一种类型的“函数”,并且只有函数才能有一种类型的“函数”:


此运算符专门用于获取值的类型,因此为什么不使用它?

首先,下划线不再使用该实现。它优化为
typeof
,除非
typeof/
返回
函数,至少在

您可以在源代码中找到:

新的jsperf:


它在FF中仍然显示出相当高的性能(但远低于您在问题中发布的幼稚实现),这是由于函数调用的开销而不是内联代码。

请参见此处的答案-@Kosmetika我没有收到您的评论。我的意思是需要注意使用
isFunction()
或甚至可能
函数实例example@Kosmetika正如Dogbert所指出的,Chrome的旧版本中有一个bug。现在你只需要使用
typeof
。一切都很完美,这是正确的答案,但我认为,对于阅读源代码的新手来说,使用u.isFunction()更清晰。此外,在性能上也没有太大差异。在Mac OS X 10.8.3上测试Chrome 27.0.1453.110-
typeof
是一个赢家54472323±1.45%fastest@Kosmetika,尝试将
typeof
包装成一个简单的函数,该函数执行相同的操作并进行比较。:)但不管怎样,为什么不直接使用
typeof
?@Kosmetika,你看到我在第一句中发布的链接了吗?为了与旧的Google Chromes兼容。@Kosmetika没有理由不使用typeof。在他有趣的回答中,Dogbert指出了一个不再有效的原因(除非你运行了旧版本的Chrome)。
// Optimize `isFunction` if appropriate.
  if (typeof (/./) !== 'function') {
    _.isFunction = function(obj) {
      return typeof obj === 'function';
    };
  }