window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Programmation fonctionnelle en JavaScript Partie 1 - Introduction - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2022-05-25
Développement de logiciels

Programmation fonctionnelle en JavaScript Partie 1 - Introduction

The Codest

Pawel Ged

Vue.js Développeur

Lisez notre article pour découvrir la puissance de la programmation fonctionnelle dans JavaScript. La programmation fonctionnelle est classée comme un paradigme déclaratif où la description du programme est séparée des calculs.

Qu'est-ce que la programmation fonctionnelle ?

"En termes simples, la programmation fonctionnelle est une développement de logiciels un style qui met l'accent sur l'utilisation des fonctions"

Extraits du livre : Luis Atencio "Functional Programming in JavaScript. Comment améliorer votre JavaScript programmes utilisant des techniques fonctionnelles"

Programmation fonctionnelle est classé comme déclaratif où la description du programme est séparée des calculs. L'accent est mis ici sur l'utilisation d'expressions pour décrire la logique du programme. C'est le contraire de impératif où le programme code est exécuté étape par étape et indique à l'ordinateur en détail comment effectuer le travail.

Déclaratif ou impératif, exemples

Prenons le cas d'un tableau de nombres entiers. Nous devons élever chacun d'entre eux à la deuxième puissance et ne sélectionner que les valeurs qui ne sont pas paires.

Impératif

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] ;

const résultats = []

for(let i = 0 ; i < numbers.length ; i++) {
const secondPower = Math.pow(numbers[i], 2)
if(secondPower & 1) { // ou % 2 mais les opérations sur les bits sont plus rapides
results.push(secondPower) ;
}
}

console.log(results) // [1, 9, 25, 49, 81]

En ce qui concerne les impératif l'accent mis sur les détails de la mise en œuvre est clairement visible. Dans la boucle, vous pouvez voir l'index du tableau en fonction de la nécessité de contrôler le nombre d'éléments. En raison du grand nombre de détails dans le code, il est plus difficile de se concentrer sur ce qu'il fait. Concentrons-nous maintenant sur l'élément déclaratif solution.

Déclaratif

const risesToSecondPower = (num) => Math.pow(num, 2)
const isOdd = (num) => num & 1 ;

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

const results = nombres
.map(risesToSecondPower)
.filter(isOdd) ;

console.log(results) // [1, 9, 25, 49, 81]

Dans cette solution, la mise en œuvre a été séparée de l'invocation en plaçant la logique dans des fonctions distinctes. Grâce à cette solution, nous pouvons nous concentrer uniquement sur les noms des fonctions qui décrivent ce qui s'y passe. En outre, le niveau d'abstraction a été relevé et la logique peut désormais être réutilisée. Concentrons-nous à présent sur l'appel. Il ne contient aucun détail, juste une description qui vous indique ce que fait ce code, étape par étape :

  1. map(risesToSecondPower) - prend chaque élément d'un tableau et l'élève à la deuxième puissance,
  2. filter(isOdd) - filtrer et sélectionner les éléments bizarres.

Avantages

Programmation fonctionnelle présente de nombreux avantages. Lorsqu'il s'agit de JavaScriptL'utilisation de fonctions est naturelle car il s'agit d'un langage fonctionnel. Même les classes dans ce langage sont du "sucre syntaxique" et elles sont en dessous composées de fonctions.

En ce qui concerne la lisibilité, dans l'approche impérative, le code devient généralement une liste de noms de fonctions qui peut être lue séquentiellement sans entrer dans leur logique. Par conséquent, nous ne nous concentrons pas sur les détails de l'implémentation.

Un autre avantage est de respecter la convention des objets immuables. Grâce à cette approche, le code devient plus sûr car les références en JavaScript sont très solides et il est facile de modifier l'objet indésirable.

Dans la programmation fonctionnelle, le code est décomposé en petites fonctions qui peuvent facilement être considérées comme du code abstrait réutilisable.

Fonction pure

Les fonctions pures constituent l'un des aspects importants de la programmation fonctionnelle. Pour créer une telle fonction, vous devez vous rappeler quelques règles :

  • le résultat que la fonction renvoie ne dépend que des paramètres d'entrée,
  • n'utilisez pas de variables globales ni de variables qui dépassent votre propre champ d'action,
  • ne modifient pas l'état des paramètres,
  • les fonctions pures n'ont pas d'effets secondaires (généralement la modification des propriétés de l'objet),
  • pour les paramètres d'entrée indiqués, ils renverront toujours un seul et même résultat,
  • une fonction pure prend toujours un paramètre et renvoie toujours un paramètre.
// Fonction Inpure
let counter = 5
...
const multipleCounter = (multiplier) => {
counter = counter * multiplier
}

multiplierCompteur(2) // -> ? le résultat dépend de la valeur initiale
// Fonction pure
const multiplyBy = (multiplier) => (valeur) => valeur * multiplier
const multipleByTwo = multiplyBy(2)

const counter = multiplyByTwo(5) // -> 10

La première fonction est imprévisible car elle dépend d'un paramètre externe qui peut changer. La seconde fonction est transparente, elle ne dépend que des paramètres d'entrée, ne les modifie pas et n'utilise pas de variables hors plage. Elle est transparente car elle dépend de paramètres, ne les modifie pas, n'utilise pas de variables hors plage et renvoie une nouvelle valeur.

bannière de coopération

Articles connexes

Développement de logiciels

Outils Javascript en action

Découvrez quelques outils de récupération JavaScript pour améliorer votre jeu de programmation. En savoir plus sur ESLint, Prettier et Husky !

The Codest
Reda Salmi React Développeur

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench