Comment accepter des paramètres illimités dans une fonction JavaScript

Comment est-il possible d'avoir une fonction qui accepte un nombre illimité de paramètres?

Disons que nous avons une fonction appeléejoin()dont le travail est de joindre toutes les chaînes que nous lui passons.

Par exemple, nous écrivons un prototype qui accepte 2 chaînes:

const join = (string1, string2) => {
  return string1 + string2
}

et quand on l'appelle, on obtient une chaîne qui est la concaténation des 2 arguments que l'on passe:

join('hi', ' flavio') // 'hi flavio'

Un moyen simple consiste à ajouter des paramètres supplémentaires par défaut à une chaîne vide, comme ceci:

const join = (string1, string2, string3 = '') => {
  return string1 + string2 + string3
}

mais cette approche ne s'adapte pas bien, car nous aurions besoin d'ajouter un grand nombre de paramètres et notre code serait plutôt mauvais.

Au lieu de cela, nous pouvons utiliser cette syntaxe, avec l'opérateur de propagation (...) suivi du nom du paramètre que nous voulons utiliser. À l'intérieur de la fonction, le paramètre est un tableau, nous pouvons donc simplement appeler son.join()méthode pour concaténer les chaînes qu'elle contient, en passant une chaîne vide comme argument (sinon, elle concatène par défaut les chaînes en ajoutant une virgule entre elles):

const join = (...strings) => {
  return strings.join('')
}

Dans notre cas, nous pouvons également simplifier cela en utilisant la syntaxe de retour implicite disponible dans les fonctions fléchées:

const join = (...strings) => strings.join('')

et nous pouvons appeler cela de la même manière que nous l'avons fait auparavant:

join('hi', ' flavio') // 'hi flavio'
join('hi', ' flavio', ' it', ' is', ' a', ' beautiful day!') // ''hi flavio it is a beautiful day!'

Téléchargez mon gratuitManuel du débutant JavaScript


Plus de tutoriels js: