Как проверить, что переданный параметр это функция?

У меня есть функция, которая одним из параметров принимает колбэк:
function foo(callback) {
  callback();
}


Но колбэк — необязательный параметр. Как наиболее правильным образом проверить, что callback — функция и что она действительно передана? Я сделал так:
function foo(callback) {
  if (typeof callback === 'function') {
    callback();
  }
}


Насколько это правильное решение в современном JavaScript?
  • Вопрос задан
  • 801 просмотр
Решения вопроса 2
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Вполне правильно, как по мне
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
typeof будет равен "function" и для Object, String, Date, например — что не входит в ваши планы.

С другой стороны, если весь код ваш, то достаточно проверять на не-пустоту
callback && callback();

Библиотека UnderscoreJS так определяет, функция ли аргумент:
Object.prototype.toString.call(callback) === '[object Function]'
и для вас можно так:
callback  &&  Object.prototype.toString.call(callback) === '[object Function]'  &&  callback();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 апр. 2024, в 19:51
1000 руб./за проект
24 апр. 2024, в 19:40
5000 руб./за проект
24 апр. 2024, в 19:18
50000 руб./за проект