(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Functional Programming í JavaScript, hluti 1 – Inngangur - The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2022-05-25
Hugbúnaðarþróun

Funkþunal forritun í JavaScript, hluti 1 – Inngangur

The Codest

Pawel Ged

Vue.js forritari

Lestu greinina okkar til að uppgötva kraft virkniforritunar í JavaScript. Virkniforritun er flokkuð sem lýsandi forritunarparadigma þar sem forritalýsingin er aðskilin frá útreikningunum.

Hér er tómt.

Hvað er virkniforritun?

“Með einföldum orðum er virkniforritun a hugbúnaðarþróun stíll sem leggur mikla áherslu á notkun fallanna”

Útdrættir úr bókinni: Luis Atencio “Hagnýt forritun í JavaScript. Hvernig á að bæta þitt JavaScript forrit sem nota virknilausnir”

Hagnýt forritun er flokkað sem yfirlýsingarlegur fyrirmynd þar sem lýsing á forritinu er aðskilin frá útreikningunum. Áherslan hér er á notkun tjáninga til að lýsa forritalógík. Þetta er gagnstætt við boðháttur forritun, þar sem kóði er framkvæmt skref fyrir skref og segir tölvunni nákvæmlega hvernig á að ljúka verkinu.

Lýsingarleg vs. skipanaleg, dæmi

Íhugaðu tilvik þar sem við höfum fylki af heilu tölu og þurfum að hækka hverja tölu í annan vöxt og síðan velja aðeins þær gildi sem eru ekki jafntölur.

Hvortvísorð

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) { // eða % 2 en bitareikningar eru hraðari
results.push(secondPower);
}
}

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

Varðandi boðháttur Í lausninni er áherslan á framkvæmdaráðstafanir greinilega sýnileg. Í lykkjunni má sjá fylkisvísitölu sem byggir á þörfinni til að stjórna fjölda þátta. Vegna mikils fjölda smáatriða í kóðanum er erfiðara að einbeita sér að því hvað hann er að gera. Leyfðu okkur nú einbeittu þér að yfirlýsingarlegur lausn.

Lýsingarlegur

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]

Í þessari lausn hefur framkvæmdin verið aðskilin frá kölluninni með því að færa skynseminni í aðskilda aðgerðir. Þökk sé þessari lausn getum við einbeitt okkur eingöngu að nöfnum aðgerða sem lýsa því sem þar fer fram. Að auki hefur abstraktstigið verið hækkað og skynsemin er nú endurnýtanleg. Nú skulum við einbeita okkur að kölluninni. Þú sérð engin smáatriði í henni, aðeins lýsingu sem segir þér hvað þessi kóði gerir skref fyrir skref:

  1. kort(rísirTilÖnnurKrafts) – taka hvern þátt í fylki og hækka hann í annan vöxt,
  2. síu(isOdd) – síuðu og veldu oddatölur.

Ávinningur

Hagnýt forritun er með marga kosti. Þegar kemur að JavaScript, Í þessu forritunarmáli er notkun fallagerða eðlileg, því málið er fallabundið. Jafnvel klasarnir í þessu forritunarmáli eru “syntactic sugar” og eru í raun samsettir úr fallagerðum.

Þegar kemur að læsileika, í imperative nálgun, verður kóðinn yfirleitt að lista yfir fallanöfn sem hægt er að lesa í röð án þess að kafa ofan í rökfræði þeirra. Afleiðingin er sú að við einbeitum okkur ekki að innleiðingarsérstöku.

Annað kostur er að halda sig við venju óbreytanlegra hluta. Þökk sé þessari nálgun verður kóðinn öruggari vegna þess að vísanir í JavaScript eru mjög sterk og það er auðvelt að breyta óæskilegum hlut.

Í virkniforritun er kóðinn sundurgreindur í smáa fall sem auðvelt er að hugsa sem endurnýtanlegan abstraktkóða.

Hreinn aðgerð

Eitt af mikilvægu atriðunum í virkniforritun eru hreinar fall. Til að búa til slíkt fall þarftu að muna nokkur reglur:

  • Niðurstaðan sem fallið skilar fer eingöngu eftir inntaksbreytunum.,
  • Ekki nota alþjóðlegar breytur og breytur sem eru utan þíns eigin gildissviðs.,
  • breyttu ekki ástandi breytnanna,
  • hreinar fallanir hafa engin hliðaráhrif (venjulega breyta þær eiginleikum hluta),
  • fyrir tilgreind inntaksgildi, skila þau alltaf sama niðurstöðunni,
  • Hreinn aðgerð tekur alltaf einn breytu og skilar alltaf einni breytu.
// Hreinn fall
let counter = 5...

const multipleCounter = (multiplier) => {
counter = counter * multiplier
}

multiplyCounter(2) // -> ? niðurstaðan fer eftir upphafsgildinu
// Hreinn fall
const multiplyBy = (multiplier) => (value) => value * multiplier
const multipleByTwo = multiplyBy(2)

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

Fyrsta fallið er ófyrirsjáanlegt vegna þess að það fer eftir ytri breytu sem getur breyst. Annað fallið er gagnsætt, það fer eingöngu eftir inntaksbreytum, breytir þeim ekki og notar ekki breytur utan gildissviðs. Það er gagnsætt vegna þess að það fer eftir breytum, breytir þeim ekki, notar ekki breytur utan gildissviðs og skilar nýju gildi.

samstarfsfáninn

Tengdar greinar

Hugbúnaðarþróun

Javascript-verkfæri í aðgerð

Uppgötvaðu nokkur JavaScript-tólin til að bæta forritunarhæfileika þína. Kynntu þér nánar ESLint, Prettier og Husky!

The Codest
Reda Salmi React forritari

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

    is_ISIcelandic
    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 is_ISIcelandic