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

Άποψη: 7794|Απάντηση: 0

[JavaScript] es6 Τελεστής επέκτασης Τρεις τελείες (...) )

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 19/6/2020 12:31:11 μ.μ. | | |
έννοια

Ο τελεστής επέκτασης (spread) είναι τρεις τελείες (...) )。 Είναι σαν το αντίστροφο μιας παραμέτρου ανάπαυσης, μετατρέποντας έναν πίνακα σε μια ακολουθία παραμέτρων διαχωρισμένη με κόμματα.



Αυτός ο τελεστής χρησιμοποιείται κυρίως για κλήσεις συναρτήσεων.



Στον παραπάνω κώδικα, array.push(...) items) και add(...) αριθμοί), οι οποίες είναι και οι δύο κλήσεις σε συναρτήσεις και χρησιμοποιούν και οι δύο τελεστές επέκτασης. Αυτός ο τελεστής μετατρέπει έναν πίνακα σε μια ακολουθία παραμέτρων.
Οι τελεστές επέκτασης μπορούν να χρησιμοποιηθούν σε συνδυασμό με κανονικές παραμέτρους λειτουργίας, κάτι που είναι πολύ ευέλικτο.



Εφαρμογή μεθόδου για εναλλακτικούς πίνακες

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



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



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



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



Επέκταση της εφαρμογής των φορέων εκμετάλλευσης

(1) Συγχώνευση πινάκων

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



(2) Σε συνδυασμό με αποδομημένη ανάθεση

Οι τελεστές επέκτασης μπορούν να συνδυαστούν με αποδομημένες αναθέσεις για τη δημιουργία πινάκων.



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



(3) Η επιστρεφόμενη τιμή της συνάρτησης

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



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

(4) Συμβολοσειρά

Οι τελεστές επέκτασης μπορούν επίσης να μετατρέψουν συμβολοσειρές σε πραγματικούς πίνακες.



Η παραπάνω γραφή έχει ένα σημαντικό πλεονέκτημα, δηλαδή μπορεί να αναγνωρίσει σωστά χαρακτήρες Unicode 32-bit.



Ο πρώτος τρόπος για να γράψετε τον παραπάνω κώδικα, η JavaScript αναγνωρίζει χαρακτήρες Unicode 32-bit ως 2 χαρακτήρες και δεν υπάρχει πρόβλημα με τους τελεστές επέκτασης. Έτσι, η συνάρτηση που επιστρέφει σωστά το μήκος της συμβολοσειράς, μπορεί να γραφτεί ως εξής:



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



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

(5) Αντικείμενα που υλοποιούν τη διεπαφή του επαναλήπτη

Οποιοδήποτε αντικείμενο στη διεπαφή Iterator μπορεί να μετατραπεί σε πραγματικό πίνακα με τελεστή επέκτασης.



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



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

(6) Δομές χαρτών και συνόλων, συναρτήσεις γεννήτριας

Ο τελεστής επέκτασης καλεί εσωτερικά τη διεπαφή Iterator της δομής δεδομένων, επομένως οποιοδήποτε αντικείμενο με διεπαφή Iterator μπορεί να χρησιμοποιήσει έναν τελεστή επέκτασης, όπως μια δομή χάρτη.



Όταν εκτελείται η συνάρτηση Generator, επιστρέφει ένα αντικείμενο διέλευσης, επομένως μπορούν επίσης να χρησιμοποιηθούν τελεστές επέκτασης.



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





Προηγούμενος:Υλοποίηση Vue+ElementUI
Επόμενος:Πρόβλημα έκδοσης έργου Angular
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com