Gamla JS-versioner namnges med nummer: ES5 (2009) och ES6 (2015).
Från 2016 är versionerna namngivna efter år: ECMAScript 2016, 2017, 2018, 2019, ...
Det här kapitlet introducerar de nya funktionerna i ECMAScript 2018:
Asynkron iteration
Lova äntligen
Egenskaper för objektvila
Nya RegExp-funktioner
JavaScript delat minne
ECMAScript 2018 lade till asynkrona iteratorer och iterables.
Med asynkrona iterables kan vi använda await
nyckelord i för/av
loopar.
for await () {}
JavaScript asynkron iteration stöds i alla moderna webbläsare sedan januari 2020:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
ECMAScript 2018 slutför den fullständiga implementeringen av Promise-objektet med Promise.finally
:
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Promise.finally
stöds i alla moderna webbläsare sedan november 2018:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
ECMAScript 2018 lade till viloegenskaper.
Detta gör att vi kan förstöra ett föremål och samla resterna på ett nytt föremål:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Objektviloegenskaper stöds i alla moderna webbläsare sedan januari 2020:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
ECMAScript 2018 lade till fyra nya RegExp-funktioner:
Unicode Property Escapes (\p{...})
Lookbehind Assertions (?<= ) och (?
Namngivna Capture Groups
s (dotAll) Flagga
De nya RegExp-funktionerna stöds i alla moderna webbläsare sedan juni 2020:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |
I JavaScript använder du Web Workers API för att skapa trådar.
Arbetstrådar används för att exekvera kod i bakgrunden så att huvudprogrammet kan fortsätta körningen.
Arbetartrådar körs samtidigt med huvudprogrammet. Samtidigt utförande av olika delar av ett program kan vara tidsbesparande.
Delat minne är en funktion som tillåter trådar (olika delar av ett program) att komma åt och uppdatera samma data i samma minne.
Istället för att skicka data mellan trådar kan du skicka ett SharedArrayBuffer-objekt som pekar på minnet där data sparas.
Ett SharedArrayBuffer-objekt representerar en rå binär databuffert med fast längd som liknar ArrayBuffer-objektet.