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!
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ų.
"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į.
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.
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.
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:
žemėlapis(risesToSecondPower) - paimkite kiekvieną masyvo elementą ir padidinkite jį iki antrosios galios,filtras(isOdd) - filtrą ir pasirinkite nelyginius elementus.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.
Vienas iš svarbių funkcinio programavimo aspektų yra grynosios funkcijos. Norint sukurti tokią funkciją, reikia prisiminti keletą taisyklių:
// Į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ę.
