342 votes

Comment savoir si une fonction Javascript est définie

Comment pouvez-vous dire si on définit une fonction en Javascript ?

Je veux faire quelque chose comme

mais qui me fait une erreur « le rappel n’est pas une fonction » rappel n’est pas défini.

546voto

Tom Ritter Points 44352
typeof(callback) == "function"

251voto

Jason Bunting Points 27534

Toutes les réponses actuelles utilisent une chaîne littérale, laquelle je préfère ne pas avoir dans mon code si possible - ce n’est pas :

Personnellement, j’ai essayer de réduire le nombre de chaînes traîner dans mon code...


Aussi, alors que je suis conscient que `` est un opérateur et non une fonction, il y a peu de dommages en utilisant la syntaxe qui fait apparaître que ce dernier.

20voto

<pre><code></code><p><code></code><code></code><code></code><code></code><code></code><code></code>est trop spécifique.</p></pre>

8voto

bdukes Points 54833

Essayez

6voto

NectarSoft Points 47

Nouveau pour le JavaScript je ne suis pas sûr si le comportement a changé, mais la solution donnée par Jason Bunting (6 ans) ne fonctionnera pas si possibleFunction n'est pas défini.

function isFunction(possibleFunction) {
  return (typeof(possibleFunction) == typeof(Function));
}

Cela permettra de jeter un ReferenceError: possibleFunction is not defined d'erreur que le moteur essaie de résoudre le symbole possibleFunction (comme mentionné dans les commentaires de Jason réponse)

Pour éviter ce comportement, vous pouvez passer le nom de la fonction que vous voulez vérifier s'il existe. Donc

var possibleFunction = possibleFunction || {};
if (!isFunction(possibleFunction)) return false;

Ceci définit une variable à la fonction que vous souhaitez consulter ou l'objet vide si elle n'est pas définie et permet d'éviter les problèmes mentionnés ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X