Η νεότερη έκδοση του JavaScript έχει μόνο 2 νέες δυνατότητες. Δείτε πώς λειτουργούν.

Ας μιλήσουμε για την τελευταία έκδοση του JavaScript: ECMAScript 2016 (πιο γνωστό ως ES7). ES7 φέρνει δύο νέα χαρακτηριστικά: Array.prototype.includes()και το νέο εκθετική χειριστή: **.

Array.prototype. include ()

Πηγαίνουν οι μέρες που .indexOf()γνωρίζαμε αν υπήρχε ένα στοιχείο σε έναν πίνακα.

Η λέξη κλειδί είναι «υπάρχει».

.indexOf() είναι καλό αν θέλουμε να μάθουμε σε ποιο ευρετήριο εμφανίζεται ένα δεδομένο στοιχείο.

Αλλά αν ο στόχος μας είναι να γνωρίζουμε εάν ένα δεδομένο στοιχείο υπάρχει σε έναν πίνακα, τότε .indexOf()δεν είναι η καλύτερη επιλογή. Και ο λόγος είναι απλός: Όταν ρωτάμε την ύπαρξη κάτι περιμένουμε μια δυαδική τιμή, όχι έναν αριθμό .

Array.prototype.includes()κάνει ακριβώς αυτό. Καθορίζει εάν ένα δεδομένο στοιχείο υπάρχει σε έναν πίνακα, επιστρέφοντας trueεάν ισχύει, falseδιαφορετικά.

Στην προδιαγραφή

Array.prototype.includes ( searchElement [ , fromIndex ] )
  • searchElement - το στοιχείο για αναζήτηση.
  • fromIndex(προαιρετικό) - το ευρετήριο από το οποίο αρχίζει η αναζήτηση.

Η κατάδυση στις προδιαγραφές μοιάζει με αναζήτηση ενέργειας.

Η προδιαγραφή λέει:

Ας πάμε βήμα προς βήμα και να προσπαθήσουμε να κατανοήσουμε τις προδιαγραφές με παραδείγματα.

  1. Η διαφορά εδώ είναι η θέση του στοιχείου 4. Επειδή το πρώτο μας παράδειγμα τοποθετεί το 4 στην τελευταία θέση, περιλαμβάνει θα πραγματοποιήσει αναζήτηση σε ολόκληρο τον πίνακα. Με προδιαγραφές .includes()επιστρέφει αμέσως μετά την εύρεση του searchElement. Αυτό κάνει τη δεύτερη λειτουργία μας πολύ πιο γρήγορη.
  2. Η μεγάλη διαφορά με τον αλγόριθμο SameValueZero έναντι της Σύγκρισης Αυστηρής Ισότητας (χρησιμοποιείται από .indexOf()) είναι ότι επιτρέπει την ανίχνευση των στοιχείων NaN .
  3. Επιστρέφει το boolean trueόταν βρεθεί το στοιχείο και falseδιαφορετικά. Δεν υπάρχουν άλλα ευρετήρια ως αποτέλεσμα;
  4. Σε αντίθεση με .indexOf(), .includes()δεν παραλείπονται στοιχεία πίνακα που λείπουν. Αντ 'αυτού, τους αντιμετωπίζει ως απροσδιόριστες τιμές.

Αρχίζετε να αισθάνεστε τη δύναμη;

Δεν έχουμε αγγίξει fromIndex.

Ας δούμε τις προδιαγραφές:

Το προαιρετικό δεύτερο όρισμα είναι fromIndexπροεπιλεγμένο 0(δηλαδή αναζητείται ολόκληρος ο πίνακας). Εάν είναι μεγαλύτερο ή ίσο με το μήκος του πίνακα, επιστρέφεται false , δηλαδή δεν θα πραγματοποιηθεί αναζήτηση στον πίνακα. Εάν είναι αρνητικό, χρησιμοποιείται ως μετατόπιση από το τέλος του πίνακα για υπολογισμό fromIndex. Εάν ο υπολογισμένος δείκτης είναι μικρότερος από 0, θα γίνει αναζήτηση ολόκληρου του πίνακα.
  1. Εάν δεν fromIndexτους παρέχεται η προεπιλεγμένη τιμή 0λαμβάνεται και αναζητείται ολόκληρος ο πίνακας.
  2. .includes()επιστρέφει αμέσως false όταν η τιμή fromIndexείναι μεγαλύτερη από το μήκος του πίνακα.
  3. Όταν fromIndexείναι αρνητικό, τότε η τιμή του υπολογίζεται ως array.length — fromIndex. Αυτό είναι ιδιαίτερα χρήσιμο κατά την αναζήτηση στα τελευταία στοιχεία. Για παράδειγμα, fromIndex = -5είναι το ίδιο με την αναζήτηση στα 5 τελευταία στοιχεία.
  4. Για να αποφευχθεί το .includes()σπάσιμο όταν η fromIndexυπολογισμένη τιμή είναι χαμηλότερη από 0, αναζητείται ολόκληρος ο πίνακας. Θα προτιμούσα να σπάσω;

Εντάξει - ένα τελευταίο νέο χαρακτηριστικό…

The Exponential Operator (**)

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

Λοιπόν, εκείνη η μέρα είναι εδώ.

Ο χειριστής **συμπεριφέρεται ακριβώς με τον ίδιο τρόπο όπως Math.pow(). Επιστρέφει το αποτέλεσμα της αύξησης του πρώτου τελεστή στη δύναμη του δεύτερου (π.χ. x ** y).

Αυτό είναι!

Τώρα έχετε τη δύναμη του ES7 ! Χρησιμοποιήστε το καλά!

Χάρη σε ?

  • 2ality.com από τον Axel Rauschmayer
  • Προδιαγραφή γλώσσας ECMAScript® 2016
  • Σε όλους τους θαυμαστές του He-Man
  • freeCodeCamp για δημοσίευση ❤️

Φροντίστε να δείτε τα άρθρα μου στο ES6:

Ας εξερευνήσουμε ES6 Generators

Γεννήτριες, γνωστή και ως εφαρμογή iterables. medium.freecodecamp.org Ω Ναι! Async / Περιμένω

async / await είναι η νέα σύνταξη JavaScript για να δηλώσει μια ασύγχρονη συνάρτηση. medium.freecodecamp.org