2013-05-29 2 views
4

Какой из лучший подход найти, является ли переменная функции типаЛучшим подходом к поиску переменной является функция?

typeof(methodName) == typeof(Function) 

или

typeof methodName === 'function' 
+1

Херес [JSPerf] (http://jsperf.com/typeof-string -vs-typeof) с некоторыми способами определить, является ли переменная переменной типа '' function '' – C5H8NNaO4

ответ

0

Это лучший подход

if (typeof methodName === 'function') { 
    // Do your stuff 
} 
1

Обычное решение, тот, который вы найдете, например, в исходном коде jQuery (example), является вторым:

typeof value === 'function' 

Это быстрее, чем первый, так как вам не нужно вызывать второй typeof и там просто нет причин использовать первый в качестве ECMAScript specifies that it has to be "function":

enter image description here

0

Оператор TypeOf возвращающего строка, указывающая тип неориентированного операнда. Так что это правильно -

typeof methodName === 'function' 

Смотрите также: typeof

5

Есть две вещи, происходящие здесь:

  1. скобках - typeof является оператором, а не функция, не использовать их
  2. По сравнению с 'function' или typeof Function (который всегда будет возвращать 'function', если только кто-то не закручивает и не перезаписывает собственные объекты). Используйте струну, она требует меньше работы и не подвержена вышеупомянутой завинчиванию.

т.е. Использование:

typeof methodName === 'function' 
1

Второй имеет лучшую производительность и используется во многих библиотеку JavaScript

+0

@dystroy Был комментарий, прежде чем заявить, что первая имеет лучшую производительность. Я думаю, он удалил комментарий, а также его ответ , Его привели к выводу неправильного кода в его [Fiddle] (http://jsfiddle.net/RienNeVaPlus/ysuAs/2/) – C5H8NNaO4

+1

@ C5H8NNaO4 ОК, это яснее, мне было интересно. –

Смежные вопросы