И кажется, что typeof быстрее.. поэтому мой вопрос - что более целесообразно использовать?
Ответ 1
Нет причин не использовать typeof.
Это не только быстрее, но спецификация ECMAScript гарантирует, что все функции имеют тип "функции" и что только функции могут иметь тип "функции":
Этот оператор был специально разработан для получения типа значения, поэтому почему бы не использовать его?
Ответ 2
Во-первых, Underscore больше не использует эту реализацию. Он оптимизируется до typeof, если typeof /./ не возвращает function, как это обычно было в старых версиях Chrome
Он по-прежнему показывает довольно высокую производительность в FF (но МНОГО меньше, чем наивная реализация, которую вы опубликовали в вопросе), что связано с накладными расходами на вызов функции, а не только на код.