просто используйте typeof
.
typeof(foobar) // -> undefined
typeof(alert) // -> function
Однако вы не можете определить функцию на основе typeof, потому что вам нужно будет передать идентификатор, который может не существовать. Поэтому, если вы определите function isfun(sym) { return typeof(sym) }
, а затем попытаетесь вызвать isfun(inexistent)
, ваш код выдаст.
Самое интересное в typeof
в том, что это оператор, а не функция. Таким образом, вы можете использовать его для проверки символа, который не определен, без броска.
если вы предполагаете, что функция находится в глобальной области видимости (то есть не в замыкании), вы можете определить функцию для проверки ее следующим образом:
function isfun(identifier) {
return typeof(window[identifier]) == 'function';
}
Здесь вы передаете строку для идентификатора, так:
isfun('alert'); // -> true
isfun('foobar'); // -> false
закрытие
Вот пример функции, определенной в замыкании. Здесь напечатанное значение будет false
, что неверно.
(function closure() {
function enclosed() {}
print(isfun('enclosed'))
})()