2012-01-12 34 views
12

en PHP que estoy escribiendo el siguientesi la función no existe función de escritura - Javascript

<?php 
if(x != 0) { 
echo "function myfunction(){};";  
} 
?> 

en JavaScript Deseo probar si la función existe y si no es escribir una función vacía

if(typeof myfunction != 'function'){ 
    function myfunction(){}; 
} 

Esto funciona muy bien en firefox pero, en Chrome, incluso si el tipo de función es igual, todavía entra y crea la función vacía. No puedo encontrar un trabajo para Chrome, lo he intentado si (! Myfunction), if (typeof window.myfunction! = 'Function) pero nada parece funcionar aquí para Chrome cuando todo parece funcionar en Firefox. ¿Algunas ideas?

+0

¿Todavía no tienes respuesta? Tengo el mismo problema y la solución a continuación no funciona para mí. –

Respuesta

29

Utilice una expresión de función, no una declaración de función.

if(typeof myfunction != 'function'){ 
    window.myfunction = function(){}; 
} 

(estoy usando window desde el último párrafo sugiere que desee una función global)

+0

Esto funcionó perfectamente gracias –

+0

Marcar como respuesta, entonces? – folktrash

+0

@BretThomas Si esto funcionó, por favor márquelo como la respuesta. –

6

Debe utilizar estricta operador de comparación ==

if(typeof myFunction !== 'function'){ 
    window.myFunction = function(){}; // for a global function or 
    NAMESPACE.myFunction = function(){}; // for a function in NAMESPACE 
} 

también tratar de mantener las funciones js dentro de los espacios de nombres, de esta forma evitarás colisiones con otras bibliotecas js en el futuro.

Cuestiones relacionadas