Les fonctions anonymes

Une fonction anonyme c'est... une fonction qui n'a pas de nom !!!

Même si cette définition est vraie, elle n'aide pas à la compréhension. Alors, recommençons : une fonction anonyme est une fonction dont le code est écrit directement dans l'appel d'une autre fonction, alors que le paramètre attendu est une fonction de rappel.

▼Publicité

Notez qu'en anglais, une fonction de rappel s'appelle « callback function ». On rencontrera aussi le terme « closure ».

Exemple avec une fonction nommée :

jQuery

$("#executer").click(afficher);

 

...

 

function afficher() {

  ...

}

Exemple avec une fonction anonyme :

jQuery

$("#executer").click(function() {

  ...

});

Lorsqu'une fonction est déclarée normalement, son nom est écrit entre le mot function et la parenthèse ouvrante (ex : function maFonction() {...}). Dans le cas d'une fonction anonyme, la parenthèse suit directement le mot function (ex : function() { ... }). C'est pourquoi elle est dite anonyme.

On utilisera une fonction anonyme lorsque les lignes de code de la fonction ne sont exécutées que dans un contexte particulier. Dans l'exemple précédent, elles ne sont exécutée que sur le clic de l'élément portant l'identifiant « executer ».

Si, par contre, le code devait être exécuté dans plusieurs contextes, on utilisera une fonction nommée.

Dans l'exemple suivant, le code sera exécuté sur le clic du bouton ainsi que lorsque la touche Entrée est pressée lorsque que le focus est dans le formulaire. On utilise donc une fonction nommée, que l'on a appelée « afficher », pour rassembler les lignes à exécuter.

Cet exemple présente tout de même deux fonctions anonymes : celle définissant ce qui doit être exécuté dès que le DOM est chargé ainsi que celle définissant ce qui doit se passer lorsqu'une touche est pressée.

Ex :

jQuery

$(function () {

    $("#execution").click(afficher);

 

    $("#formulaire").keypress(function (event) {

        if (event.which == 13) {

            afficher();

        }

    });

            

});

 

function afficher() {

    ...

}

Remarquez que la définition d'une fonction nommée n'a pas besoin d'être placée dans le $(function () { ... }. Seules les assignations aux méthodes jQuery (ici : click() et keypress()) doivent être faites dès que le DOM est chargé.

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories