Tester si une fonction existe en Javascript

Août 2013

Pour tester l'existence d'une fonction en Javascript, c'est-à-dire savoir si une fonction est déclarée ou pas, il existe plusieurs méthodes. La première chose à savoir c'est que lorsqu'on appelle une fonction qui n'existe pas en Javascript, il se produit une exception javascript : ReferenceError: une_fonction_exists is not defined. Donc détecter l'existence ou non d'une fonction sert justement à éviter cette erreur.

Il existe 2 méthodes pour savoir si une fonction existe :

Méthode 1 : typeof undefined

La première solution c'est de tester le type de la référence de la fonction (autrement dit : son nom), grâce à la fonction typeof, une fonction native du langage javascript qui retourne le type d'une variable. Si la variable ou la fonction n'existe pas, la fonction typeof va retourner la constante undefined :

if( typeof(une_fonction_inexistante) == undefined ){
	console.log("La fonction existe");
} else {
	console.log("La fonction n'existe pas");
}

Étant donné que la fonction typeof est en réalité une instruction native du langage javascript (comme if, else, switch...), les parenthèses ne sont pas obligatoire, on peut aussi écrire ceci :

if( typeof une_fonction_inexistante == undefined ){

Si vous voulez en savoir plus c'est par ici : quelle version d'excel choisir ?.

Par contre il ne faut pas tester directement la variable sans utiliser typeof, car dans ce cas l'exception javascript est quand même levée, malgré la présence du teste d'égalité.

Méthode 2 : try catch exception

L'alternative à typeof, c'est d'utiliser un try catch pour attraper l'exception :

try{
	une_fonction_inexistante();
} catch(err){
	if(err instanceof ReferenceError){
		console.log("La fonction n'existe pas");
	}
}

Fini de lire cette page ? allez faire un tour ici : formulaire de connexion, ça peut vous intéresser.

1 commentaire :
commentaire n°2933 par Happyrain
Happyrain mercredi 26 novembre 2014, 11:34
Je dirait même plus :
if( typeof(ma_function_a_tester) == 'function' ){ }
Il suffit de voir ce que retourne typeof, pour vite s'en rendre compte ;)
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré