Подтвердить что ты не робот

Как проверить, определена ли функция?

Как проверить, определена ли функция?

4b9b3361

Ответ 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');
}