2015-03-26 2 views
0

Каков наилучший способ проверить, является ли переменная функцией?Лучший способ проверить, является ли переменная функцией в javascript

var cb = function() { 
    return; 
} 

if (!!(cb && cb.constructor && cb.apply)) { 
    cb.apply(somevar, [err, res]); 
} 
//VS 
if (!!(cb && 'function' === typeof cb) { 
    cb.apply(somevar, [err, res]); 
} 
+2

Как легко, как 'если (TypeOf центибар == 'функции') {...}' –

ответ

0

Я бы сказал, второй, так как это самый простой, самый интуитивный и работает.

0

Наиболее распространенным способом было бы использовать:

(typeof foo === 'function') 

Но если вы хотите, чтобы соответствовать функции, как объекты (которые являются редкостью, но может быть полезным), вы можете проверить, является ли invokable объект:

(foo && foo.call && foo.apply) 

в большинстве случаев, вы можете также проверить конструктор (очень похожий на typeof):

(foo.constructor === Function) 

Если вы хотите, чтобы вызвать исключение, вы всегда можете:

try { 
    foo(); 
} catch (e) { 
    // TypeError: foo is not a function 
} 
Смежные вопросы