The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2022-05-25
Programinės įrangos kūrimas

Funkcinis programavimas JavaScript 1 dalis - įvadas

The Codest

Pawel Ged

Vue.js kūrėjas

Perskaitykite mūsų straipsnį ir sužinokite apie funkcinio programavimo galią JavaScript. Funkcinis programavimas priskiriamas deklaratyviajai paradigmai, kurioje programos aprašymas yra atskirtas nuo skaičiavimų.

Kas yra funkcinis programavimas?

"Paprastai tariant, funkcinis programavimas yra programinės įrangos kūrimas stilius, kuriame daug dėmesio skiriama funkcijų naudojimui".

Ištraukos iš knygos: Luis Atencio "Funkcinis programavimas JavaScript. Kaip pagerinti savo JavaScript programų, naudojančių funkcinius metodus."

Funkcinis programavimas klasifikuojamas kaip deklaratyvinis paradigma, kurioje programos aprašymas atskirtas nuo skaičiavimų. Čia akcentuojamas išraiškų naudojimas programos logikai aprašyti. Tai yra priešinga imperatyvas programavimas, kai kodas atliekamas žingsnis po žingsnio ir kompiuteriui išsamiai nurodoma, kaip atlikti užduotį.

Deklaratyvinės ir imperatyvinės formuluotės, pavyzdžiai

Panagrinėkime atvejį, kai turime sveikųjų skaičių masyvą ir kiekvieną iš jų reikia padidinti iki antrosios galios, o tada išrinkti tik tas reikšmes, kurios nėra lyginės.

Imperatyvas

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(numbers[i], 2)
if(secondPower & 1) { // arba % 2, bet operacijos su bitais atliekamos greičiau
results.push(secondPower);
}
}

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

Dėl imperatyvas sprendimą, aiškiai matyti, kad daugiausia dėmesio skiriama įgyvendinimo detalėms. Cikle matote, kad masyvo indeksas nustatomas atsižvelgiant į poreikį kontroliuoti elementų skaičių. Dėl daugybės kodo detalių sunkiau sutelkti dėmesį į tai, ką jis daro. Tegul mus dabar sutelkite dėmesį į deklaratyvinis sprendimas.

Deklaratyvinis

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]

Šiame sprendime įgyvendinimas atskirtas nuo iškvietimo, logiką perkeliant į atskiras funkcijas. Dėl šio sprendimo galime sutelkti dėmesį tik į funkcijų pavadinimus, kurie apibūdina, kas jose vyksta. Be to, buvo pakeltas abstrakcijos lygis ir logika dabar gali būti pakartotinai naudojama. Dabar sutelkime dėmesį į skambutį. Jame nematyti jokių detalių, tik aprašymas, kuriame žingsnis po žingsnio pasakoma, ką šis kodas daro:

  1. žemėlapis(risesToSecondPower) - paimkite kiekvieną masyvo elementą ir padidinkite jį iki antrosios galios,
  2. filtras(isOdd) - filtrą ir pasirinkite nelyginius elementus.

Privalumai

Funkcinis programavimas turi daug privalumų. Kai kalbama apie JavaScript, funkcijų naudojimas yra natūralus, nes tai funkcinė kalba. Net klasės šioje kalboje yra "sintaksinis cukrus", o jų apačia sudaryta iš funkcijų.

Kalbant apie skaitomumą, taikant imperatyvinį metodą, kodas paprastai tampa funkcijų pavadinimų sąrašu, kurį galima skaityti iš eilės, nesigilinant į jų logiką. Dėl to neskiriame dėmesio įgyvendinimo detalėms.

Kitas privalumas - laikytis nekintamų objektų konvencijos. Dėl šio metodo kodas tampa saugesnis, nes nuorodos JavaScript yra labai stiprūs, todėl nepageidaujamą objektą lengva pakeisti.

Funkciniame programavime kodas suskirstomas į mažas funkcijas, kurias galima lengvai laikyti pakartotinai naudojamu abstrakčiu kodu.

Gryna funkcija

Vienas iš svarbių funkcinio programavimo aspektų yra grynosios funkcijos. Norint sukurti tokią funkciją, reikia prisiminti keletą taisyklių:

  • funkcijos grąžinamas rezultatas priklauso tik nuo įvesties parametrų,
  • nenaudokite globalių kintamųjų ir kintamųjų, kurie yra už jūsų diapazono ribų,
  • nekeičia parametrų būsenos,
  • grynosios funkcijos neturi jokių šalutinių efektų (paprastai keičia objekto savybes),
  • nurodytiems įvesties parametrams, jie visada grąžins vieną ir tą patį rezultatą,
  • grynoji funkcija visada priima parametrą ir visada grąžina parametrą.
// Įvesties funkcija
tegul skaitiklis = 5
...
const multipleCounter = (daugiklis) => {
counter = counter * multiplikatorius
}

multiplyCounter(2) // -> ? rezultatas priklauso nuo pradinės vertės
// Gryna funkcija
const multiplyBy = (daugiklis) => (vertė) => vertė * daugiklis
const multipleByTwo = multiplyBy(2)

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

Pirmoji funkcija yra nenuspėjama, nes priklauso nuo išorinio parametro, kuris gali keistis. Antroji funkcija yra skaidri, ji priklauso tik nuo įvesties parametrų, jų nekeičia ir nenaudoja kintamųjų, kurių diapazonas yra kitoks. Ji yra skaidri, nes priklauso nuo parametrų, jų nekeičia, nenaudoja kintamųjų, esančių už diapazono ribų, ir grąžina naują reikšmę.

bendradarbiavimo vėliava

Susiję straipsniai

Programinės įrangos kūrimas

Veiksmingi Javascript įrankiai

Atraskite keletą JavaScript paieškos įrankių, kurie padės patobulinti jūsų programavimo žaidimą. Sužinokite daugiau apie ESLint, Prettier ir Husky!

The Codest
Reda Salmi React kūrėjas

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

      The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

      Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

      Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

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