Fonctions
Type de fonctions
En Javascript, il existe plusieurs façons de déclarer ses fonctions.
- La fonction classique
- La fonction flêche
La fonction classique ressemble à une fonction typique du language C, C# ou Java. Elle est déclarée avec le mot-clé function suivi du nom de la fonction et des paramètres entre parenthèses. Le corps de la fonction est délimité par des accolades. Voici un exemple:
La fonction flêche est une syntaxe plus récente et plus concise pour déclarer des fonctions. Elle est déclarée avec le nom des paramètres entre parenthèses, suivi de la flêche => et du corps de la fonction qui sera souvent entre accolades. On définira son nom à l'aide d'une constante. Voici un exemple:
Ces 2 types de fonctions sont essentiellement équivalents. Vous pouvez utilier la façon qui vous intéresse le plus ou vous mélange le moins. En général, on préfèrera utiliser celle qui demande d'écrire le moins de code possible, ce qui dépends du contexte. La fonction flêche a toutefois des propriétés particulière qui nous permet de raccourcir son écriture dans certains cas.
Paramètres
Les fonctions peuvent prendre des paramètres. Ces paramètres sont des valeurs que l'on passe à la fonction lors de son appel. On peut définir autant de paramètres que l'on veut, séparés par des virgules que l'on mettra entre les parenthèses de la déclaration de la fonction. Voici un exemple avec les 2 types de fonctions:
Retourner une valeur
Les fonctions peuvent retourner une valeur, comme dans les autres langage. Pour ce faire, nous utiliserpms le mot-clé return suivi de la valeur que l'on veut retourner. Contrairement aux autres lanagages de programmation que vous avez vu jusqu'à présent, il n'est pas nécessaire de spécifier le type de la valeur retournée. Une fonction qui contient un return retournera la valeur spécifiée, peu importe son type alors qu'une fonction qui ne contient pas de return retournera undefined. Voici un exemple avec les 2 types de fonctions:
Fonction comme variable
En Javascript, les fonctions sont des valeurs comme les autres. Cela signifie que vous pouvez les stocker dans des variables, les passer en paramètres à d'autres fonctions et les retourner comme valeurs de fonctions. Celà nous permet d'écrire du code très flexible, court et modulaire, mais peut aussi le rendre aussi facile à lire qu'un bol de spaghetti. Voici un exemple de fonction qui est passé à une autre fonction:
Dans cet exemple, on a défini la fonction carree qui est passé en paramètre à la fonction appliquerFonction. Dans la fonction appliquerFonction, le paramètre fonction contient donc la fonction carree. On peut ensuite l'appeler en utilisant les parenthèses comme n'importe quelle autre fonction et en lui passant les paramètres nécessaires.
Propriétés de la fonction flêche
Les fonctions flêches ont quelques propriétés intéressantes qui les rendent très utile pour raccourcir notre code:
- Les accolades sont optionnelles si le corps de la fonction ne contient qu'une seule instruction. Bref, si le corps de la fonction est une seule ligne, vous pouvez omettre les accolades.
- Si le corps de la fonction est une seule instruction qui retourne une valeur, vous pouvez omettre le mot-cléreturn. La valeur sera automatiquement retournée par la fonction.
Ces propriétés nous permettent d'écrire des fonctions très courtes comme ceci:
Dans ce cas-ci on a omis les accolades et le mot-clé return car le corps de la fonction est une seule instruction qui retourne une valeur. Cela rend la fonction très concise, même si elle a l'air un peu bizarre pour les nouveaux programmeurs.
Fonction anonyme
Les fonctions anonymes sont des fonctions qui n'ont pas de nom. Elles sont souvent utilisées lorsqu'on veut passer une fonction en paramètre à une autre fonction. Voici un exemple de fonction anonyme:
Dans le code ci-dessus, on a passé une fonction anonyme en paramètre à la fonction appliquerFonction. Cette fonction anonyme est définie directement dans l'appel de la fonction. Puisqu'elle n'est pas stockée dans une variable ou nommé, elle n'est pas réutilisable ailleurs dans le code autre que dans la fonction appliquerFonction.
Ce genre de fonction est très pratique pour les fonctions qui ne sont utilisées qu'une seule fois. Elle est toutefois problématique si vous voulez réutiliser votre code.