Javascript - Перевірте, чи має змінна тип функції

Припустимо, у мене є будь-яка змінна, яка визначається так:

Я хочу функцію, яка перевіряє, чи є тип змінної як функція. тобто.

Як я можу перевірити, чи змінна a має тип Function описаним вище способом?

Розумний знак підкреслення ефективніший, але найкращий спосіб перевірити, коли ефективність не є проблемою, написана на сторінці підкреслення, пов'язаної з @Paul Rosania.

Натхненний підкресленням, кінцева функція єFunction виглядає так:

Underscore.js використовує складніший, але високоефективний тест:

EDIT: оновлені тести показують, що typeof може бути швидше, див. http://jsperf.com/alternative-isfunction-implementations/4

Є кілька способів, тому я їх підсумовую

  • Найкращий спосіб: Більшість виконавців (без порівняння рядків) і елегантне рішення - оператор instanceof підтримується в браузерах протягом дуже довгого часу, тому не турбуйтеся - він буде працювати в IE 6.
  • Наступний найкращий спосіб: Недоліком typeof є те, що він схильний до мовчазного збою, погано, тому, якщо у вас є помилка (наприклад, "finction" ) - в цьому випадку `if` просто поверне false, і ви не будете знати, що у вас є помилка до тих пір, поки у вашому коді
  • Наступний найкращий спосіб: Це не має переваги перед рішенням №1 або №2, але набагато менш читаємо. Покращена версія цього але все ж таки набагато менше семантичного, ніж рішення # 1

JQuery ( не рекомендується з версії 3.3) Reference