ECMAScript (Čeština)
ECMAScript specifikaci je standardizovaná specifikace skriptovací jazyk vyvinutý společností Brendan Eich ze společnosti Netscape; původně se jmenoval Mocha, pak LiveScript a nakonec JavaScript. V prosinci 1995 společnost Sun Microsystems a Netscape oznámily JavaScript v tiskové zprávě. V listopadu 1996 společnost Netscape oznámila setkání mezinárodní organizace pro normalizaci Ecma, aby podpořila standardizaci JavaScriptu. První vydání ECMA-262 bylo přijato Valným shromážděním Ecma v červnu 1997. Od té doby bylo publikováno několik vydání jazykového standardu., Název „ECMAScript“ byl kompromisem mezi organizacemi zapojenými do standardizace jazyka, zejména Netscape a Microsoft, jejichž spory dominovaly raným standardům. Eich poznamenal, že “ ECMAScript byl vždy nechtěným obchodním názvem, který zní jako kožní onemocnění.“ECMAScript byl formalizován prostřednictvím provozní sémantiky prací na Stanfordské univerzitě a na Katedře výpočetní techniky, Imperial College London pro bezpečnostní analýzu a standardizaci.,
JavaScript i JScript odpovídají specifikaci ECMAScript a zároveň poskytují další funkce, které nejsou popsány ve specifikaci.
Verzeedit
existuje jedenáct vydání ECMA-262 Publikováno. Práce na verzi 11 standardu byly dokončeny v červnu 2020.,
Ročník | Datum zveřejnění | Jméno | Změny od předchozího vydání | Editor | |||
---|---|---|---|---|---|---|---|
1 | červen 1997 | První vydání | Guy L. Steele Jr.,998 | Redakční změny udržet specifikace plně v souladu s normou ISO/IEC 16262 international standard | Mike Cowlishaw | ||
3 | prosinec 1999 | Přidány regulární výrazy, lepší manipulaci řetězec, nové kontrolní hlášení, zkuste/catch zpracování výjimek, přísnější definice chyby, formátování pro číselné výstupní, a další vylepšení | Mike Cowlishaw | ||||
4 | Opustil (poslední návrh 30. června 2003) | Čtvrté Vydání bylo upuštěno, vzhledem k politické rozdíly týkající se jazykové složitosti., Mnoho funkcí navržených pro čtvrté vydání bylo zcela upuštěno; některé byly začleněny do šestého vydání. | |||||
5 | prosinec 2009 | Dodává: „přísný režim,“ podmnožinu poskytnout důkladnější kontrolu chyb a vyhnout náchylné k chybám konstrukty. Objasňuje mnoho nejasností ve specifikaci 3rd edition a přizpůsobuje chování implementací v reálném světě, které se od této SPECIFIKACE důsledně lišily., Přidává některé nové funkce, jako jsou getters a setters, podpora knihovny pro JSON a úplnější reflexe vlastností objektů. | Pratap Lakshman, Allen Wirfs-Brock | ||||
5.1 | červen 2011 | Toto vydání 5.1 ECMAScript standardu je plně v souladu se třetí vydání mezinárodní normy ISO/IEC 16262:2011., | Viz 9. Vydání – ECMAScript 2018 | Brian Terlson | |||
10 | červen 2019 | ECMAScript 2019 (ES2019) | Viz 10. Vydání – ECMAScript 2019 | Brian Terlson, Bradley Farias, Jordan Harband | |||
11 | červen 2020 | ECMAScript 2020 (ES2020) | Viz 11. Vydání – ECMAScript 2020 | Jordan Harband, Kevin Smith |
V červnu 2004, Ecma International zveřejnila ECMA-357 standard, definující rozšíření ECMAScript, známý jako ECMAScript pro XML (E4X)., Ecma také definovala „kompaktní profil“ pro ECMAScript – známý jako ES-CP nebo ECMA 327 – který byl navržen pro zařízení s omezenými zdroji, která byla stažena v roce 2015.
4. Vydání (opuštěné)Upravit
navrhované čtvrté vydání ECMA-262 (ECMAScript 4 nebo ES4) by byla první hlavní aktualizace ECMAScript od třetí vydání bylo zveřejněno v roce 1999. Specifikace (spolu s referenční implementací) byla původně zaměřena na dokončení do října 2008. První návrh byl datován v únoru 1999., Přehled jazyka vydala pracovní skupina 23. října 2007.
do srpna 2008 byl návrh ECMAScript 4th edition zmenšen zpět do projektu s kódovým označením ECMAScript Harmony. Funkce v rámci diskuse o Harmonii v době zahrnuty:
- třídy
- modul systému,
- volitelně zadejte popisy a statické typování, pravděpodobně pomocí strukturálních typ systému,
- generátory a iterátory,
- destructuring úkol, a
- algebraické datové typy.,
záměrem těchto funkcí bylo částečně lépe podporovat programování ve velkém a umožnit obětování schopnosti skriptu být dynamický pro zlepšení výkonu. Například Tamarin-virtuální stroj pro ActionScript, vyvinutý a otevřený zdroj Adobe – má podporu just-in-time compilation (JIT) pro určité třídy skriptů.
kromě zavádění nových funkcí byly v edici 4 navrženy některé chyby ES3. Tyto opravy a další a podpora kódování/dekódování JSON byly složeny do SPECIFIKACE ECMAScript, 5th Edition.,
zahájena Práce na Vydání 4 po ES-CP (Compact Profilu) provedení byla dokončena, a pokračovala přibližně 18 měsíců, kde pomalého pokroku bylo dosaženo vyvážení teorie JavaScript společnosti Netscape 2 specifikace s implementací zkušenosti společnosti Microsoft JScript .NET. Po nějaké době, se pozornost přesunula na ECMAScript pro XML (E4X) standard. Aktualizace nebyla bez diskuse. Na konci roku 2007 se na řadě blogů objevila debata mezi Eich, později CTO Mozilla Foundation a Chrisem Wilsonem, architektem platformy Microsoft pro Internet Explorer., Wilson varoval, že proto, že navrhované změny ECMAScript dělal to zpětně nekompatibilní v některých ohledech starší verze jazyka, aktualizace činil „breaking the Web“, a že zúčastněné strany, které byly proti změnám byly „skryté“. Eich reagoval prohlášením, že Wilson se zdálo být „opakující se lži, v blozích“ a popřel, že tam byl pokus o potlačení disentu a vyzval kritiky, aby poskytnout konkrétní příklady neslučitelnosti., Poukázal na to, že Microsoft Silverlight a Adobe AIR spoléhají na C# a ActionScript 3, oba jsou větší a složitější než ECMAScript Edition 3.
5th EditionEdit
Yahoo, Microsoft, Google a další disidenti 4th edition vytvořili svůj vlastní Podvýbor, aby navrhli méně ambiciózní aktualizaci ECMAScript 3, předběžně pojmenovanou ECMAScript 3.1. Toto vydání by se zaměřilo na aktualizace zabezpečení a knihovny s velkým důrazem na kompatibilitu. Po zmíněném veřejném sparringu, ECMAScript 3.,1 a ECMAScript 4 týmy dohodly na kompromisu: dvě edice by být pracoval na, v paralelní, s koordinací mezi týmy, aby zajistily, že ECMAScript 3.1 zůstává přísné podmnožina ECMAScript 4 v obou sémantiky a syntaxe.
Nicméně, odlišné filozofie v každém týmu vyústil v opakované rozbití podmnožina pravidlo, a to zůstalo pochybné, že ECMAScript 4 disidenti by nikdy podporovat nebo realizovat ECMAScript 4 v budoucnu., Po více než rok, co neshody ohledně budoucnosti ECMAScript v rámci Ecma Technical Committee 39, dva týmy, dosáhla nové kompromis v červenci 2008: Brendan Eich oznámila, že Ecma TC39 by se zaměřit práci na ECMAScript 3.1 (později přejmenován na ECMAScript, 5. Vydání) projektu s plnou spolupráci všech zúčastněných stran, a prodejci by se zaměřit alespoň dva interoperabilní implementace od počátku roku 2009. V dubnu 2009 Ecma TC39 zveřejnila „konečný“ návrh 5.vydání a oznámila, že testování interoperabilních implementací by mělo být dokončeno do poloviny července., 3. prosince 2009 bylo vydáno 5.vydání ECMA-262.
6th Edition-ECMAScript 2015edit
6. vydání, původně známé jako ECMAScript 6 (ES6) a později přejmenované na ECMAScript 2015, bylo dokončeno v červnu 2015. Tato aktualizace přidává nový významný syntaxe pro psaní komplexních aplikací, včetně třídy prohlášení (class Foo { ... }
), ES6 moduly jako import * as moduleName from "..."; export const Foo
, ale definuje je sémanticky za stejných podmínek jako ECMAScript 5 strict mode., Další nové funkce patří iterátory a for...of
smyčky, Python-style generátory, šipky výraz funkce (() => {...}
), let
klíčové slovo pro místní prohlášení, const
klíčové slovo pro konstantní místní prohlášení, binární data, zadali pole, nové sbírky (mapy, sady a WeakMap), slibuje, čísla a matematika vylepšení, reflexe, proxy (metaprogramming pro virtuální předměty a obaly) a šablony literály řetězce. Kompletní seznam je rozsáhlý., Jako první SPECIFIKACE“ ECMAScript Harmony „je také známá jako“ ES6 Harmony.“
7th Edition-ECMAScript 2016edit
7th edition, oficiálně známý jako ECMAScript 2016, byl dokončen v červnu 2016. Mezi jeho vlastnosti patří blok-stanovení rozsahu proměnných a funkcí, destructuring vzory (proměnných), správný ocas, volání, operátor umocňování **
pro čísla, await
async
klíčová slova pro asynchronní programování, a Pole.prototyp.zahrnuje funkci
.,
operátor exponenciace odpovídáMatematika.pow
, ale poskytuje jednodušší syntaxi podobnou jazykům jako Python, F#, Perl a Ruby.async
/čekají
byl oslavován jako jednodušší způsob, jak používat sliby a rozvíjet asynchronní kód.
8th Edition-ECMAScript 2017edit
8th edition, oficiálně známý jako ECMAScript 2017, byl dokončen v červnu 2017. Mezi jeho vlastnosti patří objekt .hodnoty
,objekt.,položky
aobjekt.getOwnPropertyDescriptors
funkce pro snadnou manipulaci s Objekty, async/await
konstrukcí, které používají generátory a slibuje, a další funkce pro souběžnost a atomics.
9th Edition-ECMAScript 2018edit
9th edition, oficiálně známý jako ECMAScript 2018, byl dokončen v červnu 2018. Mezi nové funkce patří odpočinek/šíření operátory pro literály objektu (tři tečky: ...identifier
), asynchronní iterace, Promise.prototype.finally
a dodatky k RegExp.,
spread operator umožňuje snadné kopírování vlastností objektu, jak je uvedeno níže.
10th Edition-ECMAScript 2019edit
10th edition, oficiálně známý jako ECMAScript 2019, byl publikován v červnu 2019. Přidané funkce zahrnují, ale nejsou omezeny na, Array.prototype.flat
Array.prototype.flatMap
změny Array.sort
Object.fromEntries
.
pole.Seřadit
je nyní zaručeno, že bude stabilní, což znamená, že prvky se stejnou prioritou třídění se objeví ve stejném pořadí v seřazeném poli., Array.prototype.flat(depth=1)
zplošťuje pole do určité hloubky, což znamená, že všechny prvky pole (až do zadané hloubky) jsou spojeny rekurzivně.
11th Edition-ECMAScript 2020edit
11th edition, oficiálně známý jako ECMAScript 2020, byl publikován v červnu 2020. Kromě nových funkcí obsahuje tato verzeBigInt
primitivní typ pro celá čísla libovolné velikosti, nullish coalescing operator a globalThis object.,
BigInts jsou vytvořeny buď pomocí BigInt
konstruktoru, nebo pomocí syntaxe 10n
, kde „n“ je umístěn po číslo doslovný. BigInts umožňují reprezentaci a manipulaci celých čísel začíslo.MAX_SAFE_INTEGER
, zatímco čísla jsou reprezentována dvojitou přesností 64bitové hodnoty IEEE 754., Vestavěné funkce v Math
nejsou kompatibilní s BigInts; například, umocňování z BigInts musí být provedeno s **
operátor místo Matematika.pow
.
nullish coalescing operator, ??
, vrátí svou pravou stranu operand, když jeho levá strana je null
nebo nedefinováno
., To kontrastuje s operátorem||
, který by pro všechny příklady vrátil „string“.
false ?? "string" // -> falseNaN ?? "string" // -> NaNundefined ?? "string" // -> "string"
Volitelné řetězení umožňuje přístup vnořených uzlů v objektu, bez nutnosti, A zkontrolujte, zda na každé úrovni.
příkladem je const zipcode = person?.adresa?.PSČ
. Pokud některá z vlastností není k dispozici, zipcode
bude nedefinováno
.
ES.NextEdit
ES.,Další je dynamický název, který odkazuje na jakoukoli další verzi v době psaní. ES.Další funkce jsou hotové návrhy (aka „fáze 4 návrhy“), jak je uvedeno v konečném návrhu, které nejsou součástí ratifikované SPECIFIKACE. Jazyková Komise se řídí modelem „living spec“, takže tyto změny jsou součástí standardu a ratifikace je formalita.