Οι λειτουργίες βέλους είναι πιο συμπαγείς, αλλά ξέρατε ότι υπάρχουν πολλές άλλες διαφορές που εισάγουν;
Οι συναρτήσεις είναι ένα ουσιαστικό μέρος της JavaScript που πρέπει να χρησιμοποιήσετε για να γράψετε επαναχρησιμοποιήσιμο κώδικα. Οι δύο κύριοι τύποι συναρτήσεων είναι οι κανονικές και οι συναρτήσεις βέλους και υπάρχουν πολλοί τρόποι για να τις ορίσετε.
Παρόλο που καλύπτουν παρόμοιες ανάγκες, έχουν μερικές κρίσιμες διαφορές που μπορούν να επηρεάσουν θεμελιωδώς τον τρόπο με τον οποίο τα χρησιμοποιείτε στον κώδικά σας. Μάθετε τα πάντα για πολλές διαφορές μεταξύ των συναρτήσεων βέλους και των κανονικών συναρτήσεων.
1. Συντακτικές διαφορές
Η σύνταξη που επιλέγετε κατά την ανάπτυξη συναρτήσεων JavaScript έχει μεγάλο αντίκτυπο στο πόσο απλό είναι να διαβάσετε και να κατανοήσετε τον κώδικά σας. Η σύνταξη των κανονικών συναρτήσεων και των συναρτήσεων βέλους διαφέρει σημαντικά, επηρεάζοντας τον τρόπο με τον οποίο γράφετε και χρησιμοποιείτε.
Λειτουργίες βέλους JavaScript χρησιμοποιήστε μια μικρότερη γλωσσική δομή που είναι πιο κατανοητή. Μπορείτε να τα χρησιμοποιήσετε για να δημιουργήσετε συναρτήσεις συνδυάζοντάς τες σε μια ενιαία έκφραση ή πρόταση.
συνθ προσθήκη = (α, β) => a + b;
Σε αυτό το παράδειγμα, το Προσθήκη η συνάρτηση δέχεται δύο εισόδους, ένα και σικαι επιστρέφει το σύνολο τους. ο => Το σύμβολο το ορίζει ως συνάρτηση βέλους.
Από την άλλη πλευρά, ο ορισμός μιας κανονικής συνάρτησης απαιτεί τη χρήση του λειτουργία λέξη-κλειδί, με πιο αναλυτική σύνταξη, όπως φαίνεται σε αυτό το παράδειγμα:
λειτουργίαΠροσθήκη(α, β) {
ΕΠΙΣΤΡΟΦΗ a + b;
}
Σε αυτό το παράδειγμα, το λειτουργία λέξη-κλειδί ορίζει μια κανονική συνάρτηση που χρησιμοποιεί επίσης σγουρά τιράντες και το ΕΠΙΣΤΡΟΦΗ δήλωση.
Οι κανονικές συναρτήσεις είναι πιο χρήσιμες για σύνθετη σύνταξη που απαιτεί πολλαπλές δηλώσεις ή εκφράσεις. Αντίθετα, οι συναρτήσεις βέλους χρησιμοποιούν μια πιο συνοπτική σύνταξη που μπορεί να κάνει τον κώδικά σας πιο ευανάγνωστο και κατανοητό.
2. Διαφορές πεδίου εφαρμογής
Ο όρος "scoping" περιγράφει πώς είναι προσβάσιμες οι εσωτερικές μεταβλητές και οι συναρτήσεις μιας συνάρτησης. Στο JavaScript, μπορείτε να ορίσετε και να αποκτήσετε πρόσβαση σε μεταβλητές και συναρτήσεις σε όλο τον κώδικά σας χρησιμοποιώντας το πεδίο εφαρμογής. Το ξεχωριστό τους Η οριοθέτηση μπορεί να επηρεάσει σημαντικά τον τρόπο με τον οποίο γράφετε και χρησιμοποιείτε JavaScript βέλος και κανονικές λειτουργίες.
Στην οριοθέτηση, πώς χειρίζονται οι συναρτήσεις βέλους το Αυτό λέξη-κλειδί διαφέρει σημαντικά από το πώς κάνουν οι κανονικές συναρτήσεις. Οι κανονικές συναρτήσεις ορίζουν το Αυτό λέξη-κλειδί οι ίδιοι? Επομένως, μπορεί να αλλάξει ανάλογα με το περιβάλλον στο οποίο καλείτε τη συνάρτηση.
Από την άλλη, επειδή δεν προσδιορίζουν το Αυτό λέξη-κλειδί, οι συναρτήσεις βέλους χρησιμοποιούν το ίδιο Αυτό καθώς το στατικό εύρος που τα περιβάλλει.
Για να δείτε τη διαφορά, δείτε το παρακάτω παράδειγμα. Ας πούμε ότι έχετε ένα πρόσωπο αντικείμενο με α όνομα ιδιοκτησία και μια μέθοδο που ονομάζεται sayName() που καταγράφει το όνομα του ατόμου χρησιμοποιώντας μια κανονική συνάρτηση:
συνθ άτομο = {
όνομα: 'Γιάννης,'sayName: λειτουργία() {
κονσόλα.κούτσουρο(Αυτό.όνομα);
}
};
person.sayName(); // καταγράφει το 'John'
Εδώ, η κανονική συνάρτηση sayName() είναι μια μέθοδος του αντικειμένου προσώπου και του Αυτό λέξη-κλειδί μέσα σε αυτήν τη συνάρτηση αναφέρεται σε αυτό το αντικείμενο ατόμου.
Ας δοκιμάσουμε τώρα το ίδιο πράγμα με μια συνάρτηση βέλους:
συνθ άτομο = {
όνομα: 'Γιάννης',sayName: () => {
κονσόλα.κούτσουρο(Αυτό.όνομα);
}
};
person.sayName(); // αρχεία καταγραφής απροσδιόριστα
Επειδή η συνάρτηση βέλους που χρησιμοποιείται στο sayName() μέθοδος δεν ορίζει τη δική της Αυτό λέξη-κλειδί, χρησιμοποιεί το Αυτό της στατικής εμβέλειας που το περιβάλλει. Σε αυτήν την περίπτωση, αυτό είναι το παγκόσμιο εύρος της περίπτωσης.
Ως αποτέλεσμα, όταν καλείτε person.sayName(), παίρνετε απροσδιόριστος προκειμένου "Γιάννης." Αυτό μπορεί να επηρεάσει σημαντικά τον τρόπο με τον οποίο γράφετε και χρησιμοποιείτε συναρτήσεις στον κώδικά σας.
3. Περιπτώσεις χρήσης και βέλτιστες πρακτικές
Οι κανονικές λειτουργίες είναι πιο κατάλληλες για λειτουργίες που απαιτούν τις δικές τους Αυτό λέξη-κλειδί, όπως μέθοδοι σε ένα αντικείμενο.
Οι λειτουργίες βέλους ταιριάζουν καλύτερα λειτουργικός προγραμματισμός και επανακλήσεις που δεν απαιτούν Αυτό λέξη-κλειδί.
4. Διαφορές δέσμευσης συναρτήσεων
Σύνδεση συνάρτησης είναι ο όρος που χρησιμοποιείται για να περιγράψει τη σχέση μεταξύ Αυτό λέξη-κλειδί και λειτουργίες στον κώδικά σας. Οι παραλλαγές στη σύνδεση συναρτήσεων μεταξύ συναρτήσεων βέλους και κανονικών συναρτήσεων μπορούν να επηρεάσουν έντονα τον τρόπο κατασκευής και χρήσης των συναρτήσεων βέλους.
Χρησιμοποιώντας την Αυτό λέξη-κλειδί το καθιστά μοναδικό σε κανονικές συναρτήσεις και συσχετίζεται με διάφορα αντικείμενα με βάση τη μέθοδο που χρησιμοποιείται για την κλήση της συνάρτησης. Η δέσμευση συναρτήσεων είναι μια από τις πιο σημαντικές διακρίσεις μεταξύ της κανονικής και της συνάρτησης βέλους.
Αντίθετα, οι συναρτήσεις βέλους δεν έχουν Αυτό λέξη-κλειδί? μάλλον το παίρνουν από τα γύρω πεδία.
Ας δούμε ένα παράδειγμα για να καταλάβουμε περισσότερα σχετικά με αυτή τη διαφορά. Ας υποθέσουμε ότι έχετε ένα πρόσωπο αντικείμενο με α όνομα πεδίο και μια μέθοδο που ονομάζεται sayName() που χρησιμοποιεί μια κανονική συνάρτηση για να καταγράψει το όνομα του ατόμου:
συνθ άτομο = {
όνομα: 'Γιάννης',sayName: λειτουργία() {
κονσόλα.κούτσουρο(Αυτό.όνομα);
}
};συνθ άλλο άτομο = {
όνομα: 'Ιωάννα'
};
person.sayName.call (άλλο Πρόσωπο); // καταγράφει "Jane"
Σε αυτό το παράδειγμα, καλείτε το αντικείμενο του ατόμου sayName() μέθοδος με την τιμή άλλο Πρόσωπο χρησιμοποιώντας την κλήση() μέθοδος. Εξαιτίας αυτού, το sayName() μέθοδος, Αυτό, η λέξη-κλειδί συνδέεται με το άλλο Πρόσωπο αντικείμενο και καταγράφει "Ιωάννα"αντί"Γιάννης."
Ας χρησιμοποιήσουμε τώρα το ίδιο πράγμα με μια συνάρτηση βέλους:
συνθ άτομο = {
όνομα: 'Γιάννης',sayName: () => {
κονσόλα.κούτσουρο(Αυτό.όνομα);
}
};συνθ άλλο άτομο = {
όνομα: 'Ιωάννα'
};
person.sayName.call (άλλο Πρόσωπο); // αρχεία καταγραφής απροσδιόριστα
Δεδομένου ότι το sayName() Η τεχνική δεν έχει τη δική της λέξη-κλειδί, χρησιμοποιείτε μια συνάρτηση με βέλος σε αυτό το παράδειγμα. Σε αυτήν την περίπτωση, η συνάρτηση βέλους κληρονομεί τις ιδιότητες του περιβάλλοντος πεδίου, το οποίο είναι το καθολικό εύρος.
Αυτό σημαίνει ότι όταν τρέχετε person.sayName.call (άλλο Πρόσωπο), της συνάρτησης βέλους Αυτό η λέξη-κλειδί παραμένει το καθολικό αντικείμενο και απροσδιόριστος παίρνει τη θέση του Ιωάννα στο ημερολόγιο.
Εάν χρειάζεται να συνδέσετε μια συνάρτηση σε μια συγκεκριμένη Αυτό τιμή, μια συνηθισμένη συνάρτηση μπορεί να είναι προτιμότερη. Ωστόσο, εάν δεν χρειάζεται να συνδέσετε μια συνάρτηση σε μια συγκεκριμένη Αυτό τιμή, μια συνάρτηση βέλους μπορεί να είναι πιο σύντομη και πιο κατανοητή.
5. Σιωπηρή Επιστροφή
Η συνάρτηση βέλους έχει μια σιωπηρή δυνατότητα επιστροφής. Εάν το σώμα της συνάρτησης αποτελείται από μία μόνο έκφραση, οι συναρτήσεις επιστρέφουν αυτήν την έκφραση.
Ως παράδειγμα:
συνθ διπλός = (Χ) => Χ * 2;
Αυτή η συνάρτηση βέλους επιστρέφει ένα διπλάσιο από μια παράμετρο. Δεν χρειάζεται να χρησιμοποιήσετε ρητή ΕΠΙΣΤΡΟΦΗ λέξη-κλειδί επειδή το σώμα συνάρτησης έχει μόνο μία έκφραση.
6. Διαφορές συμβατότητας
Οι διαφορές συμβατότητας αναφέρονται στις λειτουργίες βέλους που προστέθηκαν στο ECMAScript 6, οι οποίες ενδέχεται να μην λειτουργούν με παλαιότερα προγράμματα περιήγησης ή περιβάλλοντα. Από την άλλη πλευρά, οι κανονικές λειτουργίες υπάρχουν από την αρχή της JavaScript και υποστηρίζονται ευρέως.
Ακολουθεί μια απεικόνιση μιας συνάρτησης βέλους που μπορεί να μην λειτουργεί σε πιο καθιερωμένες συνθήκες:
συνθ προσθήκη = (α, β) => a + b;
Η παρακάτω είναι μια συγκρίσιμη κανονική συνάρτηση που θα έπρεπε να λειτουργεί στις περισσότερες περιπτώσεις:
λειτουργίαΠροσθήκη(α, β) {
ΕΠΙΣΤΡΟΦΗ a + b;
}
Χρησιμοποιήστε κανονικές λειτουργίες αντί για λειτουργίες βέλους όταν στοχεύετε παλαιότερα περιβάλλοντα για να διασφαλίσετε τη συμβατότητα. Ωστόσο, οι συναρτήσεις βέλους μπορούν να παρέχουν μια σύνταξη που είναι πιο κατανοητή και πιο συμπυκνωμένη όταν εργάζεστε με σύγχρονα προγράμματα περιήγησης και περιβάλλοντα.
Επιλογή μεταξύ συναρτήσεων βέλους και κανονικών συναρτήσεων στο JavaScript
Στο JavaScript, τα βέλη και οι κανονικές συναρτήσεις έχουν ξεχωριστά χαρακτηριστικά και εφαρμογές. Οι συναρτήσεις βέλους έχουν απλή σύνταξη, κληρονομώντας Αυτό όρος λέξης-κλειδιού από το πλαίσιο χρήσης τους ενώ οι κανονικές συναρτήσεις είναι πιο προσαρμόσιμες και μπορούν να αντιμετωπίσουν πιο σύνθετες καταστάσεις.
Είναι σημαντικό να γνωρίζετε πώς διαφέρουν και πώς να τα χρησιμοποιήσετε σύμφωνα με τις απαιτήσεις του κώδικά σας. Όταν επιλέγετε το είδος της λειτουργίας που θα χρησιμοποιήσετε, θα πρέπει επίσης να λάβετε υπόψη τις διαφορές συμβατότητας.
Τελικά, το βέλος και οι κανονικές λειτουργίες της JavaScript είναι ισχυρά εργαλεία που σας βοηθούν να γράψετε καθαρότερο και πιο αποτελεσματικό κώδικα.