window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } 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 }) }, } } })() Funktionale Programmierung in JavaScript Teil 1 - Einführung - The Codest
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2022-05-25
Software-Entwicklung

Funktionale Programmierung in JavaScript Teil 1 - Einführung

Der Codest

Pawel Ged

Vue.js Entwickler

Lesen Sie unseren Artikel, um die Leistungsfähigkeit der funktionalen Programmierung in JavaScript zu entdecken. Funktionale Programmierung wird als deklaratives Paradigma eingestuft, bei dem die Programmbeschreibung von den Berechnungen getrennt ist.

Was ist funktionale Programmierung?

"Einfach ausgedrückt, ist die funktionale Programmierung eine Software-Entwicklung Stil, der den Schwerpunkt auf die Verwendung von Funktionen legt"

Auszüge aus dem Buch: Luis Atencio "Funktionale Programmierung in JavaScript. So verbessern Sie Ihre JavaScript Programme mit funktionalen Techniken"

Funktionale Programmierung wird eingestuft als deklarativ Paradigma, bei dem die Programmbeschreibung von den Berechnungen getrennt ist. Der Schwerpunkt liegt hier auf der Verwendung von Ausdrücken zur Beschreibung der Programmlogik. Dies ist das Gegenteil von Imperativ Programmierung, bei der die Code wird Schritt für Schritt ausgeführt und sagt dem Computer im Detail, wie er die Aufgabe erledigen soll.

Deklarativ vs. Imperativ, Beispiele

Nehmen wir den Fall an, dass wir eine Reihe von ganzen Zahlen haben und jede von ihnen auf die zweite Potenz erhöhen müssen und dann nur die Werte auswählen, die nicht gerade sind.

Imperativ

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

const results = []

for(let i = 0; i < numbers.length; i++) {
const zweitePotenz = Math.pow(Zahlen[i], 2)
if(secondPower & 1) { // oder % 2, aber Operationen mit Bits sind schneller
results.push(secondPower);
}
}

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

Was die Imperativ Lösung ist die Konzentration auf Implementierungsdetails deutlich sichtbar. In der Schleife können Sie den Array-Index sehen, der auf der Notwendigkeit basiert, die Anzahl der Elemente zu kontrollieren. Aufgrund der großen Anzahl von Details im Code ist es schwieriger, sich auf das zu konzentrieren, was er tut. Konzentrieren wir uns nun auf die deklarativ Lösung.

Deklarativ

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

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

const results = numbers
.map(steigtZurSekundenPotenz)
.filter(isOdd);

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

Bei dieser Lösung wurde die Implementierung vom Aufruf getrennt, indem die Logik in separate Funktionen ausgelagert wurde. Dank dieser Lösung können wir uns nur auf die Namen der Funktionen konzentrieren, die beschreiben, was in ihnen geschieht. Außerdem wurde die Abstraktionsebene angehoben, und die Logik kann nun wiederverwendet werden. Konzentrieren wir uns nun auf den Aufruf. Sie sehen darin keine Details, sondern nur eine Beschreibung, die Ihnen Schritt für Schritt erklärt, was dieser Code tut:

  1. map(risesToSecondPower) - nimmt jedes Element eines Arrays und hebt es auf die zweite Potenz,
  2. filter(isOdd) - filtern und ungerade Elemente auswählen.

Vorteile

Funktionale Programmierung hat viele Vorteile. Wenn es darum geht JavaScriptDie Verwendung von Funktionen ist natürlich, da es sich um eine funktionale Sprache handelt. Selbst die Klassen in dieser Sprache sind "syntaktischer Zucker" und bestehen aus Funktionen.

Wenn es um die Lesbarkeit geht, wird der Code beim imperativen Ansatz in der Regel zu einer Liste mit Namen von Funktionen, die nacheinander gelesen werden können, ohne sich mit ihrer Logik zu befassen. Infolgedessen konzentrieren wir uns nicht auf die Details der Implementierung.

Ein weiterer Vorteil ist das Festhalten an der Konvention der unveränderlichen Objekte. Dank dieses Ansatzes wird der Code sicherer, da die Referenzen in JavaScript sind sehr stark und es ist einfach, das unerwünschte Objekt zu verändern.

Bei der funktionalen Programmierung wird der Code in kleine Funktionen aufgeteilt, die man sich leicht als wiederverwendbaren abstrakten Code vorstellen kann.

Reine Funktion

Einer der wichtigsten Aspekte der funktionalen Programmierung sind reine Funktionen. Um eine solche Funktion zu erstellen, müssen Sie ein paar Regeln beachten:

  • das Ergebnis, das die Funktion liefert, hängt nur von den Eingabeparametern ab,
  • Verwenden Sie keine globalen Variablen und Variablen, die außerhalb Ihres eigenen Bereichs liegen,
  • ändern den Zustand der Parameter nicht,
  • Reine Funktionen haben keine "Nebeneffekte" (in der Regel die Änderung von Objekteigenschaften),
  • für die angegebenen Eingangsparameter, werden sie immer ein und dasselbe Ergebnis liefern,
  • eine reine Funktion nimmt immer einen Parameter und gibt immer einen Parameter zurück.
// Funktion einleiten
let zähler = 5
...
const multipleCounter = (Multiplikator) => {
Zähler = Zähler * Multiplikator
}

multiplyCounter(2) // -> ? das Ergebnis hängt vom Ausgangswert ab
// Reine Funktion
const multiplyBy = (Multiplikator) => (Wert) => Wert * Multiplikator
const multipleByTwo = multiplyBy(2)

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

Die erste Funktion ist unvorhersehbar, weil sie von einem externen Parameter abhängt, der sich ändern kann. Die zweite Funktion ist transparent, da sie nur von Eingabeparametern abhängt, diese nicht verändert und keine Variablen verwendet, die außerhalb des Bereichs liegen. Sie ist transparent, weil sie von Parametern abhängt, diese nicht verändert, keine Variablen außerhalb des Bereichs verwendet und einen neuen Wert zurückgibt.

Kooperationsbanner

Ähnliche Artikel

Software-Entwicklung

Javascript-Tools in Aktion

Entdecken Sie einige JavaScript-Tools, um Ihr Programmierspiel zu verbessern. Erfahren Sie mehr über ESLint, Prettier und Husky!

Der Codest
Reda Salmi React Entwickler

Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

    Über uns

    The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

    Vereinigtes Königreich - Hauptsitz

    • Büro 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale Tech-Hubs

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Der Codest

    • Startseite
    • Über uns
    • Dienstleistungen
    • Fallstudien
    • Gewusst wie
    • Karriere
    • Wörterbuch

      Dienstleistungen

    • IT-Beratung
    • Software-Entwicklung
    • Backend-Softwareentwicklung
    • Frontend-Softwareentwicklung
    • Staff Augmentation
    • Backend-Entwickler
    • Cloud-Ingenieure
    • Daten-Ingenieure
    • Andere
    • QS-Ingenieure

      Ressourcen

    • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
    • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
    • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
    • Was sind die größten Herausforderungen für CTOs und CIOs?
    • Der Codest
    • Der Codest
    • Der Codest
    • Privacy policy
    • Website terms of use

    Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

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