Как проверить, определена ли функция?
Как проверить, определена ли функция?
Ответ 1
Функции Javascript, которые проверяют, существует ли функция.
С jQuery.isFunction() вы можете проверить параметр, чтобы проверить, является ли он (a) определенным и (b) имеет тип "функция". Поскольку вы попросили jQuery, эта функция будет щекотать вашу фантазию.
jQuery.isFunction(YourFunction)
Если вы не хотите использовать jQuery по какой-либо причине, здесь функция barebones, основанная на коде из Idealog, которая проверит, переменная имеет тип function
.
function isFunction(fn){
return typeof fn === 'function'
}
Иногда вы уже знаете, что это функция и для оптимизации не найти причины перепроверять ее тип, в этом случае здесь функция, которая просто проверяет, определена ли variable
[возможно, функция]
function isDefined(foo){
return foo !== 'undefined'
}
Как использовать эти функции
Использование jQuery:
function foo(){}
if(jQuery.isFunction(foo)) alert('This is a function');
С помощью любой из функций jQuery Javascript, указанных выше. В зависимости от контекста использования эти функции могут быть или не быть надежными. Подробнее см. Ниже
function foo(){}
if(isFunction(foo)) alert('is of type function');
if(isDefined(foo)) alert('if this is a function, it is defined');
Является ли jQuery.isFunction() выше?
В соответствии с Kyle Florence jQuery.isFunction()
в некоторых ситуациях он может быть выше. Особенно полезно в некоторых случаях при использовании методов jQuery, см. Описание .
В некоторых ситуациях в некоторых браузеров, все неправильно возвращается как тип "функция", или вещи, которые на самом деле являются функциями, возвращается как другой тип. Есть несколько тестовых примеров вы можете увидеть здесь: https://github.com/jquery/jque...
Один пример:
var obj = document.createElement( "объект" );
//Firefox говорит, что это функция typeof obj;//= > "function"
Имейте в виду, что это в основном край случаев, но причина $.isFunction была было просто положительно что-то является функцией (которая может быть очень важным для jQuery сама библиотека, возможно, не так много ваш код).
Спасибо patrick dw за указание статьи в Килле. (Patrick DW удалил свою учетную запись)
От jQuery.com
Примечание. Начиная с jQuery 1.3, функции, предоставляемые браузером, такие как alert() и методы элемента DOM, такие как getAttribute(), не гарантируются обнаружены как функции в браузерах, таких как Internet Explorer.
Ответ 2
Так же:
if (typeof myFunc != 'undefined') {
// Assign myFunc
}
Не просто протестируйте его против undefined
, который не является константой и может быть переназначен.
Ответ 3
if (myFunc !== undefined) {
// myFunc is defined
foo();
}
или
if (myFunc === undefined) {
// myFunc is not defined
qux();
}
Ответ 4
if (typeof(functionName) == 'function') {
}
.
Ответ 5
typeof return string, поэтому вы можете использовать оператор typeof JavaScript для поиска типа переменной JavaScript.
if ( typeof(youerFunctionName) === 'undefined' )
{
console.log('undefined');
}
Ответ 6
if ([function] != undefined) {
[do stuff]
}
Вы также можете использовать jQuery isFunction(), чтобы проверить его.
Ответ 7
Скажите, что ваша функция называется func
:
if (func) {
// Function is already defined (or at least something is defined there)
} else {
// Function is not defined
}
Ответ 8
попробуйте этот
/*********************************/
if(typeof(callback) == 'function')
/*********************************/
здесь работает пример
Ответ 9
function test(){}
if(typeof test != "undefined")
// function is allready defined
Ответ 10
Это то, что я использую, чтобы проверить, определена ли функция:
if ( typeof(myFunc()) === 'undefined' )
{
console.log('myFunc undefined');
}
else
{
console.log('myFunc defined');
}