Какой из лучший подход найти, является ли переменная функции типаЛучшим подходом к поиску переменной является функция?
typeof(methodName) == typeof(Function)
или
typeof methodName === 'function'
Какой из лучший подход найти, является ли переменная функции типаЛучшим подходом к поиску переменной является функция?
typeof(methodName) == typeof(Function)
или
typeof methodName === 'function'
Это лучший подход
if (typeof methodName === 'function') {
// Do your stuff
}
Обычное решение, тот, который вы найдете, например, в исходном коде jQuery (example), является вторым:
typeof value === 'function'
Это быстрее, чем первый, так как вам не нужно вызывать второй typeof
и там просто нет причин использовать первый в качестве ECMAScript specifies that it has to be "function":
Оператор TypeOf возвращающего строка, указывающая тип неориентированного операнда. Так что это правильно -
typeof methodName === 'function'
Смотрите также: typeof
Есть две вещи, происходящие здесь:
typeof
является оператором, а не функция, не использовать их'function'
или typeof Function
(который всегда будет возвращать 'function'
, если только кто-то не закручивает и не перезаписывает собственные объекты). Используйте струну, она требует меньше работы и не подвержена вышеупомянутой завинчиванию.т.е. Использование:
typeof methodName === 'function'
Второй имеет лучшую производительность и используется во многих библиотеку JavaScript
@dystroy Был комментарий, прежде чем заявить, что первая имеет лучшую производительность. Я думаю, он удалил комментарий, а также его ответ , Его привели к выводу неправильного кода в его [Fiddle] (http://jsfiddle.net/RienNeVaPlus/ysuAs/2/) – C5H8NNaO4
@ C5H8NNaO4 ОК, это яснее, мне было интересно. –
Херес [JSPerf] (http://jsperf.com/typeof-string -vs-typeof) с некоторыми способами определить, является ли переменная переменной типа '' function '' – C5H8NNaO4