2010-11-19 9 views

Respuesta

11

Esto comprobará si se define su función.

if (typeof functionName === 'function') { 
    alert('loaded'); 
} 

See it.

+0

No hay necesidad de '' ===, como 'typeof' siempre devolverá una cadena. De hecho, '===' es una comparación un poco más lenta que '=='. –

+0

@Marcel Korpel Pensé que '===' solía ser más rápido ya que no necesitaba forzar tipos para ver si cumplían con la condición. Oh, bueno, aprende algo nuevo todos los días. Por cierto, ¿tiene más lecturas o puntos de referencia sobre eso? – alex

+3

@Marcel Korpel No, '===' es * de hecho * ** más rápido ** porque hay * sobrecarga * para la conversión de tipo. También es una buena práctica usar '==='. Incluso un control rápido en mi nodo repl aquí prueba que ''==' es alrededor de 10 veces más lento cuando se trata de un Número y una Cadena. –

1

Se podía comprobar explícitamente que se trata de una función antes de llamar.

if (typeof(functionName) == "function") 
    functionName(); 
+4

No necesita los paréntesis alrededor de 'functionName'; 'typeof' es un operador, no una función. –

1

¿Qué quiere decir por loaded?

En general, debe usar algo como el evento onload para asegurarse de que todos los scripts se hayan cargado antes de llamarlos. En caso de que lo que desea es si una función ha sido declarada o no se puede utilizar el operador de typeof:

// Check the type of "myRandomFunction" 
// Note: typeof is the only way you can use undeclared variables without raising an exception 
if (typeof myRandomFunction === 'function') { 
    myRandomFunction() 
} 
+0

gracias por su ayuda. – Thomas

Cuestiones relacionadas