I think it might be only performance case - http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2
And seems that typeof
is faster.. so my question is - which is more appropriate to use?
I think it might be only performance case - http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/2
And seems that typeof
is faster.. so my question is - which is more appropriate to use?
Firstly, Underscore doesn't use that implementation anymore. It optimizes to
typeof
unlesstypeof /./
returnsfunction
, as it did atleast in older versions of ChromeYou can find this in the source code: http://underscorejs.org/underscore.js
New jsperf: http://jsperf.com/comparing-underscore-js-isfunction-with-typeof-function/3
It still shows quite a performance hit in FF (but MUCH less than the naive implementation you posted in the question), which is due to the overhead of a function call vs just inlining code.
There is no reason not to use
typeof
.Not only is it faster but the ECMAScript specification ensures that all functions have a type of "function" and that only functions can have a type of "function" :
This operator was specifically designed to get the type of a value, so why not use it ?