JavaScript, ES6, ES7, ES10, kde to jsme?
On 26 ledna, 2022 by adminES6 a ES7 – připomenutí
Nebudu vás urážet a psát další úvod do ES6… Ale vlastně to udělám. Stručně řečeno, ES6 (neboli ES2015) je dávka funkcí, které prošly čtvrtou fází podle milníku 2015. Jinými slovy, pokud dobře rozumíte ES6 a máte nějaké znalosti o ES7, máte zhruba 4 roky co dohánět… Žádný tlak.
Podívejme se, co je oficiálně součástí ES6. Mimochodem, všechny tyto funkce jsou oficiálně podporovány napříč prohlížeči. Jinými slovy, k použití žádné z nich nepotřebujete Babel (pokud nepodporujete IE 11, kterému jich několik chybí).
V ES6 máme:
Možnost vytvářet a dědit třídy.
class MyComponent extends React.Components {}
Moduly ES6 s importem a exportem.
import * from 'React';export default MyComponent;
Generátory
let fibonacci = {
*() {
let pre = 0, cur = 1
for (;;) {
=
yield cur
}
}
}
Všimli jste si? Dekorátory, destrukce objektů (jako React props: {…props}) a tak dále nejsou součástí ES6!
O ES7 (ES2016) zde máme, co máme. Je to docela malá aktualizace:
- Operátor exponencializace
base ** exponent
- Množina obsahuje
array.includes(myItem) // true or false
Zdroj: http://ecma-international.org/ecma-262/7.0/
Jak jste si asi všimli, ne, Async/Await není součástí ES7, ale ES8!
ES8, ES9, ES10
Každý, kdo v posledních dvou letech absolvoval pohovor týkající se JavaScriptu, byl minimálně 1671krát dotázán, co je ES6 a jaké přináší funkce. Ale všiml si někdo, jak se JS zjevně najednou nezastavil u ES6 ani ES7, a přesto se vás na to nikdo neptá? Tady máte příležitost uvést věci na pravou míru!
V ES8 (ES2017) jsou k dispozici tyto funkce:
A samozřejmě funkce Async / Await:
Pokud jste sledovali článek, už by vám to mělo dojít: Až na malé výjimky, které jsou ve fázi 4, je můžete používat v prohlížeči bez Babelu (to znamená, že ES8 je ES2017, je stále ještě docela nový a některé implementace jako Edge a nativní engine Opery trochu zaostávají).

Přejděme k ES9. Stejně jako ES8 a ES6 je i ES9 (neboli ES2018) poměrně zásadní aktualizací:

Konec, přechod na ES10 (neboli ES2019)!
const array = ;array.sort(...)/*
*/
- Udělat z JavaScriptu nadmnožinu JSON (podrobnosti zde)
A co ES5?
Jestliže ES6 je ES2015 a ES7 je ES2016, můžete hádat, jaký je rok ES5?
…Prohráli jste! (Pokud to tedy skutečně nevíš, ale protože tě vlastně neslyším, předpokládám, že jsi prohrál). ES5 je ES2009!!!
Tady to nekončí, před ES5 byla poslední aktualizace ES v roce 1999!!!

Jak vidíš, od roku 97 do roku 99 byly aktualizace docela časté, pak ES5 měla být jediná aktualizace za 16 let!

Jak si to vysvětlit? No, podle mého názoru na to mají vliv dva faktory. První z nich je technický: JavaScript je na nic. Upřímně řečeno, stojí. Tehdy jsme měli několik alternativ k JS: Java Applety, ActiveX, a dokonce i Flash.
Do roku 2011-asi (kdy začal být Chrome kulový) byly tyto technologie nejen řádově rychlejší než JS, ale také už měly většinu funkcí, o které se v JS snažíme i dnes. (Java měla všechny vlastnosti jazyka jako třídy a dekorátory, podporu vícevláknovosti, OpenGL, sockety atd…). Když v roce 2013 vstoupily na scénu Chrome a Google a oznámily, že Java končí (a pak následoval Flash), začalo křížové tažení, aby JS dohnal své konkurenty. O dva roky později jsme měli ES6 za dveřmi.
Druhý faktor je ekonomický: rok 2000 je rokem splasknutí bubliny Dot-com. Pro ty nejmladší z vás, představte si, co byl bitcoin před pár lety, internetové startupy byly na konci 90. let to samé. Startupy přidávaly na konec svých názvů doménu .com, aby získaly obrovské rizikové investice (stejně jako dnes máme zástavu mySuperStartup.ai), až hodnota ve 20. letech náhle klesla. To je velmi primitivní vysvětlení a vyzývám vás, abyste se podívali na článek na wikipedii, kde najdete lepší vysvětlení.
Jde o to, že internet přestal získávat potřebnou přitažlivost, aby se mohl zaměřit na JS a technologie související s webem. Později, se vznikem Amazonu, Facebooku a Googlu, měl web nový důvod k existenci a nový důvod k rozkvětu. Bylo logické, že jsme se znovu chopili JS! Google byl zveřejněn v roce 2004, Chrome byl vydán v roce 2008 a nejoblíbenějším prohlížečem se stal v roce 2014: rok před příchodem ES6.
Co chybí? (Zamítnuté návrhy)
Object.observe
Toto je asi největší zamítnutí ze všech. Původně umožňoval JS pozorovat libovolné hodnoty v kódu :
var obj = {
foo: 0,
bar: 1
};
Object.observe(obj, function(changes) {
console.log(changes);
});obj.baz = 2;
//
To byla skvělá funkce a samozřejmě to můžete dělat ze svého kódu (nebo pomocí polyfill), ale implementace v prohlížeči byla příslibem rychlejšího reaktivního kódu (např.: Angular používá hodně pozorování). Byla stažena, protože se nepodařilo dospět k implementaci s konstantním výkonem. Více podrobností najdete zde:
Zrušitelné sliby
Samozřejmost, funkce, která určitě není jediná, která chybí. Jde o to, aby vývojáři mohli kdykoli zrušit provádění libovolného slibu.
Případy použití jsou různé, například abyste měli na straně klienta timeout při asynchronní operaci nebo například pokud máte navigační systém řízený kartami a uživatel klikne na kartu dříve, než jste stihli načíst obsah aktuální karty.
blöcks
Tento návrh zmiňuji jen proto, že se mi líbí jeho název, ale také proto, že je to pěkná funkce srovnatelná s Go Routines nebo C# Tasks.
const blöck = await {|
// This code is Async, but most importantly, executed in another thread
|};
Ostatní
Přišlo několik dalších zajímavých návrhů, například volatelné konstruktory. Většina z nich byla buď stažena, protože tak učinil původní autor, nebo zamítnuta, protože jsou v rozporu nebo se překrývají s existujícími/plánovanými funkcemi.
Napsat komentář