_.isFunction(a)与typeof a ==='function'? JavaScript的

我认为这可能只是性能的情况下 – http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2

而且似乎typeof更快..所以我的问题是 – 哪个更适合使用?

没有理由不使用typeof

它不仅速度更快,而且ECMAScript规范确保所有函数都具有一种“函数”types,并且只有函数可以具有一种“函数”types:

在这里输入图像说明

这个运算符是专门devise来获得一个值的types,所以为什么不使用它?

首先,Underscore不再使用这个实现。 它优化typeof除非typeof /./返回function ,因为它至less在老版本的Chrome中

你可以在源代码中find它: http : //underscorejs.org/underscore.js

 // Optimize `isFunction` if appropriate. if (typeof (/./) !== 'function') { _.isFunction = function(obj) { return typeof obj === 'function'; }; } 

新的jsperf: http ://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/3

它在FF中仍然performance出相当的性能(但是比你在问题中发表的天真的实现less得多),这是由于函数调用的开销而不是内联代码。