Σύγχρονο JavaScript με ES6-ES13 (Οδηγός JS)

Χρήση των arrow functions στην JavaScript αποτελεσματικά

Όλα τα βίντεο του μαθήματος Μοντέρνο JavaScript με ES6-ES13 (οδηγός JS)

JavaScript έχει εξελιχθεί σημαντικά με την πάροδο των χρόνων, παρέχοντας στους προγραμματιστές ολοένα και πιο ισχυρά εργαλεία. Μια από τις σημαντικότερες βελτιώσεις στις νεότερες εκδόσεις είναι η εισαγωγή των Arrow-Συναρτήσεων (=>) με το ES6. Αυτή η νέα σύνταξη καθιστά τις συναρτήσεις όχι μόνο πιο συμπαγείς, αλλά επιλύει επίσης προβλήματα που σχετίζονται με το πλαίσιο του this. Σε αυτόν τον οδηγό, θα σου μεταφέρω τις βασικές γνώσεις σχετικά με τις Arrow-συναρτήσεις και θα σου δείξω πώς μπορείς να τις χρησιμοποιήσεις αποτελεσματικά στον κώδικά σου.

Κύρια ευρήματα

  • Οι Arrow-συναρτήσεις προσφέρουν μια πιο σύντομη σύνταξη για τη δήλωση συναρτήσεων και καταγράφουν το πλαίσιο του this με διαισθητικό τρόπο.
  • Είναι ιδιαίτερα χρήσιμες σε λειτουργίες που αναμένουν επιστροφές τιμών με τη μορφή εκφράσεων.
  • Η χρήση Arrow-συναρτήσεων μπορεί να κάνει τον κώδικα πιο αναγνώσιμο και πιο συντηρήσιμο.

Οδηγίες βήμα προς βήμα

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

Αρχικά, ας δούμε παραδοσιακές συναρτήσεις στην JavaScript. Εδώ βλέπεις ένα παράδειγμα για το πώς δηλώνεται μια συνάρτηση με το λέξη-κλειδί function:

Χρήση των συναρτήσεων βέλους στην JavaScript με αποτελεσματικότητα

Δίνουμε αυτή τη συνάρτηση, για παράδειγμα, στη setTimeout, για να εκτελέσουμε μια ανώνυμη συνάρτηση μετά από ένα δευτερόλεπτο:

Αυτή είναι η στάνταρ μέθοδος για να χρησιμοποιούμε συναρτήσεις στην JavaScript. Αλλά μπορούμε να βελτιώσουμε αυτή τη σύνταξη αφήνοντας το λέξη-κλειδί function και χρησιμοποιώντας αντ' αυτού μια Arrow-συνάρτηση. Επιτυγχάνει τον ίδιο στόχο, απαιτούντας λιγότερες γραμμές κώδικα. Η σύνταξη είναι η εξής:

Αν πάρουμε ένα πρακτικό παράδειγμα για να το διευκρινίσουμε. Δηλώνω έναν πίνακα που περιέχει τις τιμές 1 έως 5:

Τώρα μπορούμε να χρησιμοποιήσουμε τη μέθοδο findIndex για να βρούμε τον δείκτη μιας συγκεκριμένης τιμής (π.χ. 3) στον πίνακα. Με παραδοσιακές συναρτήσεις, ο κώδικας είναι ως εξής:

Αυτό λειτουργεί, αλλά ας χρησιμοποιήσουμε την Arrow-συνάρτηση για να βελτιώσουμε τον κώδικα. Αφαιρούμε το λέξη-κλειδί function και χρησιμοποιούμε τη σύνταξη Arrow:

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

Αυτό λειτουργεί τέλεια και λαμβάνουμε τον επιθυμητό δείκτη.

Η Arrow-συνάρτηση είναι συμπαγής και απλοποιεί τη σύνταξη σημαντικά. Ένα επιπλέον πλεονέκτημα είναι η διαχείριση του this. Ας δούμε ένα παράδειγμα με αντικείμενα. Έχεις ένα αντικείμενο που έχει μια μέθοδο που προσπελάζει μια ιδιότητα στο αντικείμενο:

Εάν καλέσεις αυτή τη μέθοδο με ένα setTimeout και την γράψεις ως παραδοσιακή συνάρτηση, αυτό θα οδηγήσει σε πρόβλημα. Η έξοδος του this δεν θα είναι το αναμενόμενο αντικείμενο:

Το this θα είναι μη καθορισμένο. Ωστόσο, αν αντικαταστήσεις το λέξη-κλειδί function με μια Arrow-συνάρτηση, το this παραμένει προσκολλημένο στο περιβάλλον πλαίσιο:

Αποτελεσματική χρήση των βελών (Arrow Functions) στην JavaScript

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

Πού μπορούμε να χρησιμοποιήσουμε τις Arrow-συναρτήσεις ακόμα; Είναι ιδιαίτερα πρακτικές όταν θέλεις να περάσεις συναρτήσεις σε μεθόδους όπως map, filter ή reduce. Αυτές οι μέθοδοι αναμένουν μια συνάρτηση ως όρισμα και επωφελούνται από τη σύντομη σύνταξη. Ορίστε ένα απλό παράδειγμα με το map, που τετραγωνίζει τα στοιχεία ενός πίνακα:

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

Να σημειώσεις όμως ότι σε ορισμένες περιπτώσεις, π.χ. με πολυγραμμικούς σώματος συναρτήσεων, η χρήση του λέξη-κλειδί function παραμένει υποχρεωτική. Είναι επομένως στο χέρι σου να επιλέξεις την κατάλληλη μέθοδο ανάλογα με το πλαίσιο.

Σύνοψη - Οι Arrow-συναρτήσεις στην JavaScript εξηγήθηκαν καθαρά

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

Συχνές ερωτήσεις

Τι είναι οι Arrow-συναρτήσεις στην JavaScript;Οι Arrow-συναρτήσεις είναι μια συμπαγής σύνταξη για τη δήλωση συναρτήσεων, που εισήχθη στο ES6.

Πώς διαφέρει η Arrow-συνάρτηση από τις παραδοσιακές συναρτήσεις;Οι Arrow-συναρτήσεις χρησιμοποιούν μια διαφορετική σύνταξη και διατηρούν το πλαίσιο του this, ενώ οι παραδοσιακές συναρτήσεις δεν το κάνουν.

Πότε πρέπει να χρησιμοποιώ Arrow-συναρτήσεις;Χρησιμοποίησε Arrow-συναρτήσεις όταν γράφεις σύντομες συναρτήσεις ή όταν περνάς συναρτήσεις ως ορίσματα σε άλλες συναρτήσεις.

Είναι οι Arrow-συναρτήσεις πλήρης εναλλακτική στις παραδοσιακές συναρτήσεις;Όχι πάντα. Σε ορισμένες περιπτώσεις, π.χ. σε μεθόδους που εξαρτώνται από το πλαίσιο του this, πρέπει να χρησιμοποιήσεις παραδοσιακές συναρτήσεις για να επιτύχεις τις επιθυμητές λειτουργίες.

Υπάρχουν μειονεκτήματα στις Arrow-συναρτήσεις;Ναι, οι Arrow-συναρτήσεις δεν μπορούν να χρησιμοποιηθούν ως Constructor και δεν μπορούν να χρησιμοποιηθούν σε αντικείμενα ή κλάσεις όπου το this έχει συγκεκριμένη σημασία.