Ο τελεστής rest στην JavaScript
Αυτό το μάθημα θα ξεκινήσουμε με μια κάποια διευκρίνιση.
Σε όλα τα προηγούμενα μαθήματα αυτής της ενότητας δεν
σας είπα όλη την αλήθεια για τον τελεστή ...
Στην πραγματικότητα αυτός ο τελεστής ανάλογα με τη θέση του στον κώδικα μπορεί να ονομάζεται είτε τελεστής spread, είτε τελεστής rest.
Όπως ήδη γνωρίζετε, όταν ο τελεστής spread
βρίσκεται πριν από έναν πίνακα ή μια συμβολοσειρά, τον διαχωρίζει
σε μεμονωμένες τιμές. Ο τελεστής rest,
αν και έχει την ίδια σύνταξη ως ...,
προορίζεται για κάτι διαφορετικό.
Τώρα θα δούμε για τι. Ας υποθέσουμε ότι έχουμε μια συνάρτηση που δέχεται δύο παραμέτρους:
function func(a, b) {
console.log(a);
console.log(b);
}
Θα πρέπει ήδη να γνωρίζετε ότι εάν μεταβιβάσετε επιπλέον παραμέτρους στη συνάρτηση, αυτό δεν θα προκαλέσει σφάλμα:
func(1, 2, 3, 4, 5);
Ο τελεστής rest επιτρέπει τη λήψη όλων
των επιπλέον παραμέτρων σε μορφή πίνακα. Για αυτό
στη συνάρτηση προστίθεται μια ακόμη παράμετρος (απαραίτητα
στην τελευταία θέση), πριν από την οποία γράφονται 3 τελείες:
function func(a, b, ...rest) {
}
Αυτές οι τρεις τελείες είναι ο τελεστής rest, και το όνομα
της μεταβλητής μπορεί να είναι οποιοδήποτε, αλλά
συνήθως είναι αποδεκτό να ονομάζεται επίσης rest.
Ας καλέσουμε τη συνάρτησή μας με περίσσεια
παραμέτρων και ας δούμε τι μπαίνει
στις παραμέτρους a και b, και τι -
στο υπόλοιπο rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // θα εμφανίσει 1
console.log(b); // θα εμφανίσει 2
console.log(rest); // θα εμφανίσει [3, 4, 5]
}
Εάν δεν υπάρχουν επιπλέον παράμετροι, τότε στη μεταβλητή
rest θα εισαχθεί ένας κενός πίνακας:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // θα εμφανίσει 1
console.log(b); // θα εμφανίσει 2
console.log(rest); // θα εμφανίσει []
}
Η συνάρτηση μπορεί γενικά να μην έχει παραμέτρους,
αλλά να μπορεί κανείς να προσθέσει rest.
Σε αυτήν την περίπτωση η συνάρτηση μπορεί να κληθεί
με οποιονδήποτε αριθμό παραμέτρων και όλες θα
μπαίνουν στον πίνακα rest:
function func(...rest) {
console.log(rest);
}