window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster υπάρχει ήδη') } 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 }) }, } } })() Λειτουργικός προγραμματισμός στο JavaScript Μέρος 1 - Εισαγωγή - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2022-05-25
Ανάπτυξη λογισμικού

Λειτουργικός προγραμματισμός στο JavaScript Μέρος 1 - Εισαγωγή

The Codest

Pawel Ged

Vue.js Προγραμματιστής

Διαβάστε το άρθρο μας για να ανακαλύψετε τη δύναμη του λειτουργικού προγραμματισμού στο JavaScript. Ο λειτουργικός προγραμματισμός ταξινομείται ως δηλωτικό παράδειγμα όπου η περιγραφή του προγράμματος διαχωρίζεται από τους υπολογισμούς.

Τι είναι ο λειτουργικός προγραμματισμός;

"Με απλά λόγια, ο λειτουργικός προγραμματισμός είναι μια ανάπτυξη λογισμικού στυλ που δίνει μεγάλη έμφαση στη χρήση των λειτουργιών"

Αποσπάσματα από το βιβλίο: Luis Atencio "Λειτουργικός Προγραμματισμός σε JavaScript. Πώς να βελτιώσετε το JavaScript προγράμματα με χρήση λειτουργικών τεχνικών"

Λειτουργικός προγραμματισμός ταξινομείται ως δηλωτικό παράδειγμα όπου η περιγραφή του προγράμματος διαχωρίζεται από τους υπολογισμούς. Η έμφαση εδώ δίνεται στη χρήση εκφράσεων για την περιγραφή της λογικής του προγράμματος. Αυτό είναι το αντίθετο του προστακτική προγραμματισμού, όπου η κωδικός εκτελείται βήμα προς βήμα και λέει λεπτομερώς στον υπολογιστή πώς να κάνει τη δουλειά.

Δηλωτική vs προστακτική, παραδείγματα

Σκεφτείτε μια περίπτωση όπου έχουμε έναν πίνακα ακεραίων αριθμών και πρέπει να αυξήσουμε κάθε έναν από αυτούς στη δεύτερη δύναμη και στη συνέχεια να επιλέξουμε μόνο εκείνες τις τιμές που δεν είναι ζυγοί.

Επιτακτική

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) { // ή % 2 αλλά οι πράξεις σε bits είναι ταχύτερες
results.push(secondPower),
}
}

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

Όσον αφορά το προστακτική λύση, η εστίαση στις λεπτομέρειες εφαρμογής είναι σαφώς ορατή. Στο βρόχο, μπορείτε να δείτε το δείκτη του πίνακα με βάση την ανάγκη ελέγχου του αριθμού των στοιχείων. Λόγω του μεγάλου αριθμού λεπτομερειών στον κώδικα, είναι πιο δύσκολο να εστιάσετε σε αυτό που κάνει. Ας εστιάσουμε τώρα στο δηλωτικό λύση.

Δηλωτικό

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]

Σε αυτή τη λύση, η υλοποίηση έχει διαχωριστεί από την κλήση, μεταφέροντας τη λογική σε ξεχωριστές συναρτήσεις. Χάρη σε αυτή τη λύση, μπορούμε να επικεντρωθούμε μόνο στα ονόματα των συναρτήσεων που περιγράφουν τι συμβαίνει σε αυτές. Επιπλέον, το επίπεδο αφαίρεσης έχει αυξηθεί και η λογική μπορεί πλέον να είναι επαναχρησιμοποιήσιμη. Τώρα, ας επικεντρωθούμε στην κλήση. Δεν μπορείτε να δείτε λεπτομέρειες σε αυτήν, μόνο μια περιγραφή που σας λέει τι κάνει αυτός ο κώδικας, βήμα προς βήμα:

  1. map(risesToSecondPower) - παίρνει κάθε στοιχείο ενός πίνακα και το αυξάνει στη δεύτερη δύναμη,
  2. filter(isOdd) - φίλτρο και επιλέξτε περιττά στοιχεία.

Οφέλη

Λειτουργικός προγραμματισμός έχει πολλά οφέλη. Όταν πρόκειται για JavaScript, η χρήση συναρτήσεων είναι φυσική επειδή πρόκειται για μια λειτουργική γλώσσα. Ακόμη και οι κλάσεις σε αυτή τη γλώσσα είναι "συντακτική ζάχαρη" και αποτελούνται από συναρτήσεις.

Όσον αφορά την αναγνωσιμότητα, στην προστακτική προσέγγιση, ο κώδικας συνήθως μετατρέπεται σε μια λίστα με ονόματα συναρτήσεων που μπορούν να διαβαστούν διαδοχικά χωρίς να εμβαθύνουν στη λογική τους. Ως αποτέλεσμα, δεν εστιάζουμε στις λεπτομέρειες της υλοποίησης.

Ένα άλλο πλεονέκτημα είναι η τήρηση της σύμβασης των αμετάβλητων αντικειμένων. Χάρη σε αυτή την προσέγγιση, ο κώδικας γίνεται ασφαλέστερος επειδή οι αναφορές στα JavaScript είναι πολύ ισχυρά και είναι εύκολο να τροποποιήσετε το ανεπιθύμητο αντικείμενο.

Στον λειτουργικό προγραμματισμό, ο κώδικας αναλύεται σε μικρές συναρτήσεις που μπορούν εύκολα να θεωρηθούν ως επαναχρησιμοποιήσιμος αφηρημένος κώδικας.

Καθαρή λειτουργία

Ένα από τα σημαντικά ζητήματα του λειτουργικού προγραμματισμού είναι οι καθαρές συναρτήσεις. Για να δημιουργήσετε μια τέτοια συνάρτηση, πρέπει να θυμάστε μερικούς κανόνες:

  • το αποτέλεσμα που επιστρέφει η συνάρτηση εξαρτάται μόνο από τις παραμέτρους εισόδου,
  • μην χρησιμοποιείτε παγκόσμιες μεταβλητές και μεταβλητές που βρίσκονται πέρα από το δικό σας εύρος,
  • δεν αλλάζουν την κατάσταση των παραμέτρων,
  • οι καθαρές συναρτήσεις δεν έχουν "παρενέργειες" (συνήθως τροποποίηση ιδιοτήτων αντικειμένων),
  • για τις υποδεικνυόμενες παραμέτρους εισόδου, θα επιστρέφουν πάντα ένα και το αυτό αποτέλεσμα,
  • μια καθαρή συνάρτηση λαμβάνει πάντα μια παράμετρο και επιστρέφει πάντα μια παράμετρο.
// Inpure function
let counter = 5
...
const multipleCounter = (πολλαπλασιαστής) => {
counter = counter * multiplier
}

multiplyCounter(2) // -> ? το αποτέλεσμα εξαρτάται από την αρχική τιμή
// Καθαρή λειτουργία
const multiplyBy = (πολλαπλασιαστής) => (τιμή) => τιμή * πολλαπλασιαστής
const multipleByTwo = multiplyBy(2)

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

Η πρώτη συνάρτηση είναι απρόβλεπτη επειδή εξαρτάται από μια εξωτερική παράμετρο που μπορεί να αλλάξει. Η δεύτερη συνάρτηση είναι διαφανής, εξαρτάται μόνο από τις παραμέτρους εισόδου, δεν τις τροποποιεί και δεν χρησιμοποιεί μεταβλητές εκτός εύρους. Είναι διαφανής επειδή εξαρτάται από παραμέτρους, δεν τις τροποποιεί, δεν χρησιμοποιεί μεταβλητές εκτός εύρους και επιστρέφει μια νέα τιμή.

πανό συνεργασίας

Σχετικά άρθρα

Ανάπτυξη λογισμικού

Εργαλεία Javascript σε δράση

Ανακαλύψτε μερικά εργαλεία ανάκτησης JavaScript για να βελτιώσετε το παιχνίδι προγραμματισμού σας. Μάθετε περισσότερα για το ESLint, το Prettier και το Husky!

The Codest
Reda Salmi React Προγραμματιστής

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

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