Υπάρχουν πρόσθετες διαφορές μεταξύ των δύο εκτός από τη σύνταξη.

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

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

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

Ποιες είναι οι συναρτήσεις βέλους της JavaScript;

Λειτουργίες βέλους JavaScript είναι ένας εναλλακτικός τρόπος ορισμού συναρτήσεων που δεν χρησιμοποιούν την προεπιλογή λειτουργία λέξη-κλειδί:

instagram viewer
λειτουργίαlogMessage(μήνυμα) {
κονσόλα.log (μήνυμα);
}

συνθ logMessage = (μήνυμα) => {
κονσόλα.log (μήνυμα);
}

συνθ logMessage = μήνυμα =>κονσόλα.log (μήνυμα);

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

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

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

Πώς διαφέρουν οι συναρτήσεις βέλους από τις κανονικές συναρτήσεις στο JavaScript;

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

Παρά τις ομοιότητες μεταξύ των δύο, ωστόσο, υπάρχουν ορισμένες διαφορές που πρέπει να γνωρίζουν οι προγραμματιστές.

Διαφορά στο πεδίο εφαρμογής

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

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

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

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

λειτουργίακαθυστερημένο μήνυμα(μήνυμα, καθυστέρηση) {

setTimeout(λειτουργία(μήνυμα) {
κονσόλα.log (μήνυμα);
}, καθυστέρηση);

}

καθυστερημένο μήνυμα("Γειά σου Κόσμε", 1000);

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

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

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

λειτουργίακαθυστερημένο μήνυμα(μήνυμα, καθυστέρηση) {

setTimeout(() => {
κονσόλα.log (μήνυμα);
}, καθυστέρηση);

}

καθυστερημένο μήνυμα("Γειά σου Κόσμε", 1000);

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

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

Αναγνωσιμότητα κώδικα

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

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

τάξημετρητής{
_count = 0;
προσαύξηση = () => {
Αυτό._count += 1;
}
μείωση = () => {
Αυτό._count -= 1;
}
καταμέτρηση = () => {
ΕΠΙΣΤΡΟΦΗΑυτό._μετρώ;
}
}

αφήνω ct = νέος μετρητής();

Ρόλος στον Αντικειμενοστραφή Προγραμματισμό

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

τάξηorderLineItem{
_LineItemID = 0;
_Προϊόν = {};
_Ποσότητα = 1;

κατασκευαστής(προϊόν) {
Αυτό._LineItemID = crypto.randomUUID();
Αυτό._Προϊόν = προϊόν
}

changeLineItemQuantity = (νέοΠοσότητα) => {
Αυτό._Qty = newQty;
}
}

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

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

Πότε πρέπει να χρησιμοποιήσετε τις συναρτήσεις βέλους JavaScript;

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

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

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