open

Javascript langage fonctionnel avec des fonctions qui sont des objets !

#1 Rappel. Les fonctions sont des objets open

On a vu que Javascript a ses types primitifs et que ces types sont des objets. Les fonctions sont aussi des objets. Ce sont des objets qui ont en plus la capacité d'être invoqués. On va déclarer une fonction et montrer qu'elle a un constructeur.

Les fonctions ont un constructeur

On va montrer que l'on peut ajouter dynamiquement une propriété à une fonction.

Tester le code

Si vous voulez une preuve supplémentaire sur le fait qu'une fonction en Javascript est un objet alors exécutez le code ci-dessus, ouvrez votre console dans chrome et tapez test. et vous verrez s'afficher la liste des propriétés et méthodes de test.

Les propriétés d'un objet fonction

Ensuite allez chercher constructor, choisissez le, et vous pouvez conclure qu'une fonction en Javascript est un objet de constructeur Function().

Une fonction est un objet de constructeur function

#2 Déclarer les fonctions en Javascript open

Ici on va voir 3 manières de déclarer une fonction.

Ici test1 et test2 sont des références sur leurs fonctions. Il n'y a pas de return dans ces fonctions ce qui fait que la valeur retournée vaut undefined.

#3 Travailler avec les fonctions open

Javascript c'est un langage fonctionnel. La donnée de base en Javascript c'est la fonction. Vous auriez pu vous attendre à ce que ce soit l'objet surtout si vous avez fait la playlist que j'ai faite concernant le DOM. Je vais donner un petit aperçu de cet aspect fonctionnel ici. Je dis bien petit.

Vous pouvez passer une fonction en argument d'une autre fonction. On utilise beaucoup cette construction en Javascript pour gérer les événements et les échanges asynchrones. Dans ces cas là, la fonction qui est passée en argument est appelée un callback. Call pour appel et back pour plus tard. Donc littéralement callback signifie "appeler plus tard". En français on parle de fonction de rappel. C'est intéressant de regarder ce mécanisme au moins sous sa forme la plus simple.

Tester le code

Dans l'exemple ci-dessus la fonction passée en argument est appelée immédiatement. Il n'y a pas pratiquement pas de décalage dans le temps entre le moment où vous passez le callback et le moment où il est appelé. Certains pourraient dire que ce n'est pas un véritable callback car il n'y a pas d'asynchronisme. Mais ceci dit le mécanisme reste le même.

On verra plus tard comment passer des arguments au callback ou travailler avec un callback qui retourne une valeur.

Notez que la fonction executerAction est appelée avant sa déclaration. On verra pourquoi c'est possible plus tard.

Vous avez aussi la possibilité de retourner des fonctions.

Ci-dessous vous avez un exemple avec une fonction anonyme dans laquelle j'ai placé un Math.random() > 0.5 qui simule un tirage de type "pile ou face".

Cette fonction retourne selon la valeur du tirage une déclaration de fonction qui est ensuite passée en callback.

On verra une approche supplémentaire de la programmation fonctionnelle lorsque l'on verra certains itérateurs spécifiques à Javascript (* forEach, map, filter, reduce).

Tester le code