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