Как проверить, что переданный параметр это функция?
Вполне правильно, как по мне
typeof будет равен "function" и для Object, String, Date, например — что не входит в ваши планы.
С другой стороны, если весь код ваш, то достаточно проверять на не-пустоту callback && callback();
Библиотека UnderscoreJS  так определяет, функция ли аргумент:Object.prototype.toString.call(callback) === '[object Function]'и для вас можно так:callback  &&  Object.prototype.toString.call(callback) === '[object Function]'  &&  callback();