Впервые в JavaScript Я не уверен, изменилось ли поведение, но решение, данное Джейсоном Бантингом (6 лет назад), не будет работать, если возможная функция не определена.
function isFunction(possibleFunction) {
return (typeof(possibleFunction) == typeof(Function));
}
Это приведет к ошибке ReferenceError: possibleFunction is not defined
, поскольку движок попытается разрешить символ возможной функции (как указано в комментариях к ответу Джейсона)
Чтобы избежать такого поведения, вы можете передать только имя функции, которую вы хотите проверить, если она существует. Так
var possibleFunction = possibleFunction || {};
if (!isFunction(possibleFunction)) return false;
Это задает переменную либо как функцию, которую вы хотите проверить, либо как пустой объект, если она не определена, что позволяет избежать проблем, упомянутых выше.