The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2022-05-25
Vývoj softwaru

Funkcionální programování v JavaScript, část 1 - Úvod

The Codest

Pawel Ged

Vue.js Vývojář

Přečtěte si náš článek a objevte sílu funkcionálního programování v JavaScript. Funkcionální programování je klasifikováno jako deklarativní paradigma, kde je popis programu oddělen od výpočtů.

Co je to funkcionální programování?

"Zjednodušeně řečeno, funkcionální programování je vývoj softwaru styl, který klade hlavní důraz na používání funkcí."

Ukázky z knihy: Luis Atencio "Funkcionální programování v JavaScript. Jak zlepšit svůj JavaScript programy využívající funkční techniky"

Funkční programování je klasifikován jako deklarativní paradigma, kde je popis programu oddělen od výpočtů. Důraz je zde kladen na použití výrazů pro popis logiky programu. Je to opak imperativ programování, kde kód je prováděn krok za krokem a podrobně říká počítači, jak má práci provést.

Deklarativní vs. imperativní, příklady

Uvažujme případ, kdy máme pole celých čísel a potřebujeme každé z nich zvýšit na druhou mocninu a poté vybrat pouze ty hodnoty, které nejsou sudé.

Imperativ

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

const results = []

for(let i = 0; i < numbers.length; i++) {
const secondPower = Math.pow(čísla[i], 2)
if(secondPower & 1) { // nebo % 2, ale operace s bity jsou rychlejší
results.push(secondPower);
}
}

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

Pokud jde o imperativ řešení je jasně patrné zaměření na implementační detaily. Ve smyčce je vidět index pole založený na potřebě kontrolovat počet prvků. Vzhledem k velkému množství detailů v kódu je obtížnější zaměřit se na to, co dělá. Nechť nás se nyní zaměřte na deklarativní řešení.

Deklarativní

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 = numbers
.map(risesToSecondPower)
.filter(isOdd);

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

V tomto řešení byla implementace oddělena od volání tím, že logika byla přenesena do samostatných funkcí. Díky tomuto řešení se můžeme zaměřit pouze na názvy funkcí, které popisují, co se v nich děje. Navíc se zvýšila úroveň abstrakce a logika nyní může být opakovaně použitelná. Nyní se zaměřme na volání. Nevidíte v něm žádné podrobnosti, pouze popis, který vám krok za krokem řekne, co tento kód dělá:

  1. map(risesToSecondPower) - vezme každý prvek pole a zvýší jej na druhou mocninu,
  2. filter(isOdd) - filtru a vyberte liché prvky.

Výhody

Funkční programování má mnoho výhod. Pokud jde o JavaScript, je použití funkcí přirozené, protože se jedná o funkcionální jazyk. Dokonce i třídy v tomto jazyce jsou "syntaktickým cukrem" a jsou pod ním složeny z funkcí.

Pokud jde o čitelnost, v imperativním přístupu se kód obvykle stává seznamem s názvy funkcí, které lze číst postupně, aniž by bylo nutné pronikat do jejich logiky. V důsledku toho se nesoustředíme na implementační detaily.

Další výhodou je dodržení konvence neměnných objektů. Díky tomuto přístupu se kód stává bezpečnějším, protože reference v kódu JavaScript jsou velmi silné a nežádoucí objekt lze snadno upravit.

Ve funkcionálním programování je kód rozdělen na malé funkce, které lze snadno považovat za opakovaně použitelný abstraktní kód.

Čistá funkce

Jedním z důležitých aspektů funkcionálního programování jsou čisté funkce. Chcete-li takovou funkci vytvořit, musíte si zapamatovat několik pravidel:

  • výsledek, který funkce vrací, závisí pouze na vstupních parametrech,
  • nepoužívejte globální proměnné a proměnné, které jsou mimo váš vlastní rozsah,
  • nemění stav parametrů,
  • čisté funkce nemají žádné "vedlejší účinky" (obvykle modifikují vlastnosti objektu),
  • pro uvedené vstupní parametry, vrátí vždy jeden a tentýž výsledek,
  • čistá funkce vždy přijímá parametr a vždy vrací parametr.
// Funkce Inpure
let counter = 5
...
const multipleCounter = (multiplikátor) => {
counter = counter * multiplikátor
}

multiplyCounter(2) // -> ? výsledek závisí na počáteční hodnotě
// Čistá funkce
const multiplyBy = (multiplikátor) => (hodnota) => hodnota * multiplikátor
const multipleByTwo = multiplyBy(2)

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

První funkce je nepředvídatelná, protože závisí na vnějším parametru, který se může změnit. Druhá funkce je transparentní, závisí pouze na vstupních parametrech, nemění je a nepoužívá proměnné mimo rozsah. Je transparentní, protože závisí na parametrech, nemění je, nepoužívá proměnné mimo rozsah a vrací novou hodnotu.

banner spolupráce

Související články

Vývoj softwaru

Nástroje Javascript v akci

Objevte některé nástroje pro načítání JavaScript, které vám pomohou zlepšit vaši programovací hru. Zjistěte více o ESLint, Prettier a Husky!

The Codest
Reda Salmi React Vývojář

Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

    O nás

    The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

    Spojené království - ústředí

    • Kancelář 303B, 182-184 High Street North E6 2JA
      Londýn, Anglie

    Polsko - Místní technologická centra

    • Kancelářský park Fabryczna, Aleja
      Pokoju 18, 31-564 Krakov
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polsko

      The Codest

    • Home
    • O nás
    • Služby
    • Case Studies
    • Vědět jak
    • Kariéra
    • Slovník

      Služby

    • To Advisory
    • Vývoj softwaru
    • Vývoj backendu
    • Vývoj frontendů
    • Staff Augmentation
    • Vývojáři backendu
    • Cloudoví inženýři
    • Datoví inženýři
    • Další
    • Inženýři QA

      Zdroje

    • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
    • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
    • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
    • Jaké jsou hlavní výzvy CTO a CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Všechna práva vyhrazena.

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