web-dev-qa-db-fra.com

Déterminer s'il existe une fonction JavaScript nommée de manière statique pour éviter les erreurs

J'ai un script sur mon site Web qui appelle une fonction statically named quand elle est appelée:

childLoad();

La fonction childLoad() n'est pas toujours définie bien qu'elle soit toujours appelée. Comment puis-je empêcher le script d'appeler cette fonction si elle n'existe pas?

23
macintosh264
if ( typeof childLoad == 'function' ) { 
    childLoad(); 
}
56
Michael Jasper

Vous pouvez utiliser l'évaluation de court-circuit:

childLoad && childLoad();

('childLoad' in this) && childLoad && childLoad();

Cela vous assurera que childLoad peut être référencé, veille à ce que ce ne soit pas indéfini, puis appelez la fonction. Cela ne vérifie pas que cela fonctionne, mais j'estime personnellement que ce n'est pas nécessaire.

REMARQUE: this n'est peut-être pas le contexte auquel vous faites référence si vous utilisez call ou apply. Cela dépend vraiment du reste de votre code.

11
Joe
if(typeof childLoad == 'function') {   
  childLoad();   
}
6
Jayendra

Vous pouvez simplement vérifier:

if (childLoad)
    childLoad()
1
Samich

Vous pourriez l'entourer en une tentative d'essayer!

0
jcvandan
<script>
/* yourfunction */
if(typeof yourfunction == 'function') {   
  yourfunction();   
}
function yourfunction(){
  //function code
}
</script>
0
Mohammed Shafeek