2016-01-25 3 views
-2

J'ai un tableau avec des noms de fonctions, je voudrais que le code ci-dessous itère dans le tableau avec les noms de fonctions et vérifie si le nom de la fonction existe.typeof variablename == fonction ne fonctionne pas

Si func_3 n'existe pas, il faut vérifier si func_4 existe et ne pas arrêter la boucle jusqu'à ce qu'il vérifie si toutes les fonctions du tableau existent

J'ai passé beaucoup de temps à ce sujet mais ne peux pas comprendre où vais-je tort, s'il vous plaît aider

code Demo

  function func_1(){ 
       alert("FUNCTION EXISTS"); 
      } 
      function func_2(){ 
       alert("FUNCTION EXISTS"); 
      } 
      var functions = ["func_1", "func_2", "func_3", "func_4"]; 
      for(var i=0;i < functions.length; i++){ 
       var func_name = functions[i]; 
       if(typeof func_name=='function') { 
        alert("HELLO WORLD"); 
       } 
       alert("ITERATING WELL"); 
      } 
+3

Pouvez-vous poster une démo pour reproduire votre problème? Cela ne semble pas correct ... – elclanrs

+0

Cela devrait fonctionner dans les deux cas. Recevez-vous des erreurs spécifiques dans la console? –

+0

@Spencer T. j'ai mis un code de démonstration, s'il vous plaît jeter un oeil – Manu

Répondre

0

Chaque fois que vous avez ces problèmes juste essayer de console.log (nom_variable) les variables et vérifier les résultats en appuyant sur F12 votre page avec le script. Dans votre cas, c'est console.log (typeof req); console.log (typeof a);

0

Supposons que votre fonction est la suivante:

function req(){ 
alert('hello world'); 
} 

puis

console.log(typeof req) //output "function" 

var a=req 

console.log(typeof a) //output "function" 

parce que les deux 'req' et 'a' sont le type de fonction.

============================================== ============

mis à jour

si vous voulez toujours invoquer la fonction javascript en utilisant le code mis à jour, l'utilisation suivante:

function func_1(){ 
alert("FUNCTION EXISTS"); 
} 
function func_2(){ 
alert("FUNCTION EXISTS"); 
} 
var functions = ["func_1", "func_2", "func_3", "func_4"]; 
for(var i=0;i < functions.length; i++){ 
var func_name = new Function(functions[i]); 
if(func_name && typeof func_name=='function') { 
alert("HELLO WORLD"); 
} 
alert("ITERATING WELL"); 
} 

il semble « var foo = new Fonction (fonctions [i]) 'est ce que vous cherchez

+0

@ ark3typ3 oh maintenant je comprends, ce qui se passe est quand la fonction 'req' n'existe pas, il brise la boucle. Comment puis-je garder la boucle pour itérer même si la fonction n'existe pas – Manu

+0

@Manu pls ajouter du code. Nous ne pouvons pas comprendre de quelle boucle parlez-vous –

+0

vous pouvez vérifier si la fonction est définie en utilisant if (reg et typeof req == 'fonction') –