Я заметил странную вещь в javascript. Рассмотрим ниже:
var fn = ''.toUpperCase.call
console.log(typeof fn); // "function"
fn(); // Uncaught TypeError: `fn` is not a function
Вышеупомянутое было выполнено на моей консоли разработчика Chrome. Версия 43.0.2357.81 m.
Оператор typeof ясно показывает, что fn является функцией, но ошибка предполагает иное.
Я заметил, что Function.apply показывает хотя бы какое-то значимое сообщение об ошибке.
Итак, когда функция, а не функция?