typeof f === 'function' // → f is Callable
({}).toString.call(f) === '[object Function]' // → f is a Function
Может ли кто-нибудь объяснить мне, какая разница между Function и Callable?
Ответ 1
Вообще говоря, объект может быть вызван без функции. На языке, где все является объектом (включая функции), вызываемые объекты не должны опускаться из класса Function.
В JS, похоже, что Callable - это все, что имеет внутренний метод [[Call]] (идентифицированный типом "функции", а не "объект" ). Функция (как используется в слайде) является потомком объекта Function. Я мог ошибаться, но в рамках script вы можете создавать только функции, в то время как реализация ECMAScript может определять Callables, которые не являются функциями.
Если вы попробуете фрагмент кода из слайда с анонимными функциями/функциями и с объявленными функциями, результаты будут одинаковыми.