我认为这可能只是性能案例 - http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2
而且似乎typeof
更快..所以我的问题是 - 哪个更适合使用?
我认为这可能只是性能案例 - http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2
而且似乎typeof
更快..所以我的问题是 - 哪个更适合使用?
没有理由不使用typeof
.
它不仅更快,而且ECMAScript 规范确保所有函数都具有“函数”类型,并且只有函数可以具有“函数”类型:
这个运算符是专门为获取值的类型而设计的,那么为什么不使用它呢?
首先,Underscore 不再使用该实现。它优化到typeof
除非typeof /./
返回function
,因为它至少在旧版本的 Chrome中所做的那样
您可以在源代码中找到它: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 中仍然显示出相当大的性能损失(但比您在问题中发布的幼稚实现要少得多),这是由于函数调用的开销与仅内联代码的开销。