ECMAScript 2019
JavaScript 版本号
旧的 JS 版本以数字命名:ES5 (2009) 和 ES6 (2015)。
从 2016 年开始,版本按年份命名:ECMAScript 2016、2017、2018、2019、...
ES2019 中的新特性:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Επιλογή catch συνδέσμος
- Array.flat()
- Array.flatMap()
- 重新修订的 Array.Sort()
- Ανανεωμένη JSON.stringify()
- 字符串文字中允许的分隔符
- 重新修订的 Function.toString()
警告
这些特性相对较新。
较旧的浏览器可能需要替代代码(Polyfill)
JavaScript字符串 μέθοδος trimStart()
ES2019 为 JavaScript 添加了 String 方法 trimStart()
。
trimStart()
方法的工作方式与 trim()
类似,但仅从字符串的开头删除空格。
Παράδειγμα
let text1 = "\x20\x20\x20Hello World!\x20\x20\x20"; let text2 = text1.trimStart();
自 2020 年 1 月以来,所有现代浏览器都支持 JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Απρίλιος 2018 | Ιανουάριος 2020 | Ιούνιος 2018 | Σεπτέμβριος 2018 | Μάιος 2018 |
JavaScript字符串 μέθοδος trimEnd()
Το ES2019 προσθέτει στο JavaScript trimEnd()
字符串方法。
trimEnd()
方法的工作方式与 trim()
类似,但仅从字符串末尾删除空格。
Παράδειγμα
let text1 = "\x20\x20\x20Hello World!\x20\x20\x20"; let text2 = text1.trimEnd();
Από τον Ιανουάριο του 2020, όλες οι σύγχρονες περιηγητές υποστηρίζουν το JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Απρίλιος 2018 | Ιανουάριος 2020 | Ιούνιος 2018 | Σεπτέμβριος 2018 | Μάιος 2018 |
JavaScript αντικείμενο μέθοδος fromEntries()
Το ES2019 προσθέτει στο JavaScript fromEntries()
Μέθοδοι αντικειμένων.
fromEntries()
Η μέθοδος δημιουργεί αντικείμενα από ανακρίβεια κλειδιών/τιμών.
Παράδειγμα
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Από τον Ιανουάριο του 2020, όλες οι σύγχρονες περιηγητές υποστηρίζουν το JavaScript Object fromEntries():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
Μάρτιος 2019 | Ιανουάριος 2020 | Οκτώβριος 2018 | Μάρτιος 2019 | Απρίλιος 2019 |
Επιλογή catch συνδέσμος
Από το ES2019 και μετά, μπορείτε να παραλείψετε το parameter catch αν δεν χρειάζεται:
Παράδειγμα
Πριν από το 2019:
try { // κώδικας } // κώδικας }
Μετά το 2019:
try { // κώδικας } // κώδικας }
Από τον Ιανουάριο του 2020, όλες οι σύγχρονες περιηγητές υποστηρίζουν την επιλογή catch binding:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
Απρίλιος 2018 | Ιανουάριος 2020 | Ιανουάριος 2018 | Μάρτιος 2018 | Μάιος 2018 |
JavaScript array μέθοδος flat()
Το ES2019 προσθέτει στο JavaScript flat()
Μέθοδοι πίνακα.
flat()
Η μέθοδος δημιουργεί νέο πίνακα μέσω της εκτροπής του ενσωματωμένου πίνακα.
Παράδειγμα
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Από τον Ιανουάριο του 2020, όλες οι σύγχρονες περιηγητές υποστηρίζουν το JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
Σεπτέμβριος 2018 | Ιανουάριος 2020 | Σεπτέμβριος 2018 | Σεπτέμβριος 2018 | Σεπτέμβριος 2018 |
JavaScript array μέθοδος flatMap()
Το ES2019 προσθέτει στο JavaScript flatMap()
Μέθοδοι πίνακα.
flatMap()
Η μέθοδος πρώτα αντιγράφει όλους τους στοιχεία του πίνακα και στη συνέχεια δημιουργεί νέο πίνακα μέσω της εκτροπής του πίνακα.
Παράδειγμα
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Σταθερή array μέθοδος sort()
ES2019 Ενημέρωσητου μεθόδου sort() του Array.
Πριν από το 2019, η νομοθεσία επιτρεπόταν ανεπιτυχημένος αλγόριθμος ταξινόμησης, όπως ο QuickSort.
Μετά το ES2019, οι πλοηγοί πρέπει να χρησιμοποιούν σταθερούς αλγορίθμους ταξινόμησης:
Όταν τα στοιχεία ταξινομούνται με βάση μια τιμή, αυτά τα στοιχεία πρέπει να διατηρούν τη σχετική τους θέση με άλλα στοιχεία που έχουν την ίδια τιμή.
Παράδειγμα
const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ];
Στο παρακάτω παράδειγμα, όταν τα αποτελέσματα ταξινομούνται κατά τιμή, δεν επιτρέπεται η εμφάνιση άλλων ονομάτων σε άλλες σχετικές θέσεις, όπως:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Ανανεωμένη JSON.stringify()
ES2019 Ενημέρωσητου μεθόδου stringify() του JSON.
Πριν από το 2019, το JSON δεν μπορούσε να συμβολικοποιήσει χαρακτήρες που κωδικοποιούνται με '\'.
Παράδειγμα
let text = JSON.stringify("\u26D4");
Πριν από το ES2019, η χρήση JSON.stringify() σε κώδικες UTF-8 (U+D800 έως U+DFFF) θα επιστρέφει κατεστραμμένους χαρακτήρες Unicode, όπως ���.
Με αυτή την τροποποίηση, οι συμβολοσειρές με κώδικες UTF-8 μπορούν να μετατραπούν με ασφάλεια με JSON.stringify() και να ανακτηθούν ως αρχικές συμβολοσειρές με JSON.parse().
Διαχωριστικό σύμβολο
Στις συμβολοσειρές κειμένου επιτρέπεται τώρα η χρήση διαχωριστικών γραμμής και παράγραφου (\u2028
και \u2029
)
Πριν από το 2019, αυτά θεωρούνταν τελειώσεις γραμμής και προκαλούσαν σφάλματα εξαιρέσεων:
Παράδειγμα
// Αυτό είναι έγκυρο στο ES2019: let text = "\u2028";
Λήψη προσοχής
Τώρα, το JavaScript και το JSON έχουν τα ίδια κανόνια.
Πριν από το ES2019:
Η ερώτηση "text = JSON.parse('"\u2028"')" θα αναλύσει σε ''.
Η ερώτηση "text = '"\u2028"' θα δώσειΓλωσσικό σφάλμα。
Ανανεωμένη Function toString()
ES2019 ΕνημέρωσηΗ μέθοδος Function toString()
Η μέθοδος toString() επιστρέφει μια αλφαριθμητική αλυσίδα που εκπροσωπεί τον κώδικα πηγής της συνάρτησης.
Από το 2019, το toString() πρέπει να επιστρέφει τον κώδικα πηγής της συνάρτησης, συμπεριλαμβανομένων των σχολίων, των κενών και των λεπτομερειών της γραμματικής.
Πριν από το 2019, διαφορετικοί περιηγητές επιστρέφουν διαφορετικές εκδοχές της συνάρτησης (π.χ. χωρίς σχόλια και κενά). Από το 2019, η συνάρτηση πρέπει να επιστρέφεται πλήρως όπως γράφτηκε.
Παράδειγμα
function myFunction(p1, p2) { return p1 * p2; }