Défault / rest / spread

VALEURS PAR DÉFAUT

En javascript il est possible d’appeler une function avec un nombre d’arguments variables.

  • si on passe plus d’arguments que déclaré par la fonction, les arguments supplémentaires sont ignorées. On peut toutefois les utiliser en utilisant la variable « arguments ».
  • si on passe moins d’arguments que déclaré par la fonction, les arguments manquant auront comme valeur undefined

Dans le cas où la fonction n’appelle pas toujours tous les arguments, pour ne pas lever d’erreur on doit vérifier soit même que les arguments attendu sont présent sinon on leur affecte une valeur par défaut. On faisait donc quelque chose comme cela:

ES6 nous permet maintenant de définir des valeurs par défaut

Cela marche bien jusque la valeur attendu soit égale à une chaine vide  » ou égale à 0, en ES5 0 ou  » étaient considérés comme undefined et était donc remplacé par la valeur par défaut. Maintenant 0 et  » sont des valeurs valide et ne seront donc pas remplacés par les valeurs par défaut.

La valeur par défaut peut être une fonction ou d’autres arguments de la fonction, d’autres variables

Attention: dans le cas de l’utilisation d’autres paramètre de la fonction l’ordre est important.

Les valeurs par défaut existe aussi pour les affectations d’objet (vu dans Destructuring: affectations de?structure?es, décomposées)

Dans notre cas si yolo.bar n’existe pas, bar aura comme valeur ‘Paris’.

LES PARAMÈTRES REST

Pour déclarer un nombre variable de paramètres dans une fonction, en es5 on pouvait utiliser la variable « arguments » qui permettait qui permettait de récupérer les arguments de la fonction.

On peut maintenant utiliser l’opérateur rest qui nous permet de récupérer un véritable array contrairement à arguments: pour l’utiliser il faut ajouter le préfixe … au dernier argument de la fonction.

Le rest operator peut aussi fonctionner avec des affectations de?structure?es :

Cas d’utilisation : Un classement de course : place 1,2 et 3 les autres sont ceux qui ne sont pas des vainqueurs.

L’OPÉRATEUR SPREAD

C’est l’exact opposé de l’opérateur rest, c’est l’opérateur de décomposition: il permet de développer un objet itérable comme un array en argument d’une fonction.
Contrairement au rest operator, il peut être mélangé aux arguments d’une fonction.