JavaScript - les fonctions

Définition

les fonctions sont des instructions qui s'implémentent indépendamment du code principal. Elles ont un nom et une signature

En algorithmique, il en existe 2 sortes:

  • Les fonctions

    Elles retournent systèmatiquement un résultat qui peut être une chaîne de caractère, un entier, un bool ... grâce au mot clef : return

  • Les procédures

    Il s'agit d'une suite d'instructions mais qui ne retourne pas de résultat

Utilisation basique

Pour implémenter une fonction on utilise le mot clef function suivit du nom et de la signature

  • Function ma_fonction(param1,param2){
    • //ici l'implémentation de la fonction
  • }

Par exemple

  • //Exemple de fonction
  • Function square(valeur){
    • return valeur*valeur;
  • }
  • //Exemple de procédure
  • Function afficher(str){
    • documnt.write(str);
  • }

Pour utiliser la fonction, il suffit de l'appeler par son nom.

  • //[...]
  • let val=Prompt("saisir un entier");
  • //J'appelle la fonction "square" et stocke le resultat dans une variable
  • var val2=square(val);
  • //J'appelle la fonction "afficher" pour afficher le résultat
  • afficher(val2);

Passage en valeur, passage en référence

Il existe deux solutions pour passer une variable dans une fonction : en valeur ou en Référence.

  • En valeur

    Lorsqu'une variable est passée en valeur, celle-ci ne varie pas par rapport au code principal

    • var var1=2;
    • function square(val){
      • return val * val;
    • }
    • console.log("var1 vaut "+var1);
    • console.log("le carré de var1 vaut "+square(var1));
    • console.log("var1 vaut "+var1);
    var1 vaut 2
    le carré de var1 vaut 4
    var1 vaut 2
    On constate qu'après avoir appelé la fonction square la valeur de var1 reste la même
  • En référence

    Contrairement au passage en valeur, lorsqu'une variable est passée en référence, sa valeur changera en sortie de fonction.

    Le problème c'est que par défaut toute variable passée en paramètre l'est forcement en valeur,

Fonctions anonymes vs fonctions définies

En JavaScript le nom d'une fonction n'est pas obligatoire, on peut l'implémenter et l'affecter à une variable

  • var mafonction=function(){
    • alert('pop');
  • }
  • mafonction();

Cependant contrairement au fonction définie (avec un nom de fonction)Celle-ci ne peuvent être utilisé avant d'être implémenté

  • mafonction();
  • var mafonction=function(){
    • alert('pop');
  • }
  • //Va générer une erreur
  • mafonction();
  • function mafonction(){
    • alert('pop');
  • }
  • //Va emettre alert

Les fonctions fléchées

Une fonction fléchée (=>)possède une syntaxe plus courte

  • (param=>{console.log(param)})("test");

Celle-ci peut être affecté à une variable en vue d'une utilisation future

  • var fnc=(param=>{console.log(param)});
  • [...]
  • fnc("test");