Articles

ECMAScript

de ECMAScript-specificatie is een gestandaardiseerde specificatie van een scripttaal die is ontwikkeld door Brendan Eich van Netscape. In december 1995 kondigden Sun Microsystems en Netscape JavaScript aan in een persbericht. In november 1996 kondigde Netscape een bijeenkomst aan van de Ecma International standards organization om de standaardisatie van JavaScript te bevorderen. De eerste editie van ECMA-262 werd goedgekeurd door de Algemene Vergadering van de Ecma in juni 1997. Sindsdien zijn verschillende edities van de taalstandaard verschenen., De naam “ECMAScript” was een compromis tussen de organisaties die betrokken zijn bij het standaardiseren van de taal, met name Netscape en Microsoft, wiens geschillen domineerden de vroege standaarden sessies. Eich merkte op dat ” ECMAScript was altijd een ongewenste handelsnaam die klinkt als een huidziekte.”ECMAScript is geformaliseerd door middel van operationele semantiek door werk aan Stanford University en het Department of Computing, Imperial College London voor veiligheidsanalyse en standaardisatie.,

zowel JavaScript als JScript voldoen aan de ECMAScript-specificatie, terwijl het ook extra functies biedt die niet in de specificatie worden beschreven.

Versiesedit

Er zijn elf edities van ECMA-262 gepubliceerd. Het werk aan versie 11 van de standaard werd afgerond in juni 2020.,

ECMAScript versie geschiedenis
Edition Datum gepubliceerd Naam Veranderingen van de vorige uitgave Editor
1 juni 1997 Eerste editie Guy L. Steele Jr.,998 Redactionele wijzigingen te houden van de specificatie volledig in overeenstemming met ISO/IEC 16262 internationale standaard Mike Cowlishaw
3 December 1999 Toegevoegd reguliere expressies, beter string handling, nieuwe control statements, try/catch exception handling, striktere definitie van fouten, opmaak van numerieke uitvoer, en andere verbeteringen Mike Cowlishaw
4 Verlaten (laatste ontwerp-30 juni 2003) Vierde Editie werd verlaten, vanwege politieke meningsverschillen betreffende taal complexiteit., Veel voor de vierde editie voorgestelde functies zijn volledig geschrapt; sommige zijn opgenomen in de zesde editie.
5 December 2009 voegt “strict mode” toe, een subset bedoeld om een grondiger foutcontrole te bieden en foutgevoelige constructies te voorkomen. Verduidelijkt veel dubbelzinnigheden in de specificatie van de derde editie, en past het gedrag van real-world implementaties toe die consistent verschilden van die specificatie., Voegt een aantal nieuwe functies, zoals getters en setters, bibliotheek ondersteuning voor JSON, en meer volledige reflectie op object Eigenschappen. Pratap Lakshman, Allen Wirfs-Brock
5.1 juni 2011 deze editie 5.1 van de ECMAScript-standaard is volledig in lijn met de derde editie van de internationale norm ISO/IEC 16262:2011., bekijk de 9e Editie – ECMAScript 2018 Brian Terlson
10 juni 2019 ECMAScript 2019 (ES2019) Zie 10e Editie – ECMAScript 2019 Brian Terlson, Bradley Farias, Jordan Harband
11 juni 2020 ECMAScript 2020 (ES2020) Zie 11e Editie – ECMAScript 2020 Jordanië Harband, Kevin Smith

In juni 2004, Ecma International gepubliceerd ECMA-357 standaard, het definiëren van een uitbreiding van ECMAScript, bekend als de ECMAScript for XML (E4X)., Ecma definieerde ook een” Compact profiel ” voor ECMAScript – bekend als ES-CP, of ECMA 327 – dat is ontworpen voor resource-beperkte apparaten, die werd ingetrokken in 2015.

4e editie (verlaten)Edit

de voorgestelde vierde editie van ECMA-262 (ECMAScript 4 of ES4) zou de eerste belangrijke update van ECMAScript zijn geweest sinds de derde editie in 1999 werd gepubliceerd. De specificatie (samen met een referentie-implementatie) was oorspronkelijk bedoeld voor voltooiing tegen oktober 2008. Het eerste ontwerp dateert van februari 1999., Een overzicht van de taal werd uitgebracht door de werkgroep op 23 oktober 2007.in augustus 2008 was het ECMAScript 4th edition voorstel teruggeschaald naar een project met de codenaam ECMAScript Harmony. Functies die op dat moment besproken werden voor Harmony waren:

  • klassen,
  • een modulesysteem,
  • optionele typeannotaties en statische typering, waarschijnlijk met behulp van een structureel typesysteem,
  • generatoren en iteratoren,
  • vernietigingstoewijzing en
  • algebraïsche gegevenstypen.,

de bedoeling van deze features was deels om het programmeren in het groot beter te ondersteunen, en om het mogelijk te maken een deel van het vermogen van het script om dynamisch te zijn op te offeren om de prestaties te verbeteren. Bijvoorbeeld, Tamarin-de virtuele machine voor ActionScript, ontwikkeld en open – source door Adobe-heeft just-in-time compilatie (JIT) ondersteuning voor bepaalde klassen van scripts.

naast het introduceren van nieuwe functies, werden sommige ES3-bugs voorgesteld om te worden opgelost in editie 4. Deze fixes en anderen, en ondersteuning voor JSON codering / decodering, zijn gevouwen in de ECMAScript, 5th Edition specificatie.,

het werk begon op editie 4 Nadat de ES-CP (Compact Profile) specificatie was voltooid, en ging ongeveer 18 maanden door, waar er langzame vooruitgang werd geboekt door de theorie van Netscape ’s JavaScript 2 specificatie te balanceren met de implementatieervaring van Microsoft’ s JScript .NET. na enige tijd werd de focus verschoven naar de ECMAScript voor XML (E4X) standaard. De update is niet zonder controverse geweest. Eind 2007 werd een debat tussen Eich, later de Mozilla Foundation ’s CTO, en Chris Wilson, Microsoft’ s platform architect voor Internet Explorer, Openbaar op een aantal blogs., Wilson waarschuwde dat omdat de voorgestelde wijzigingen in ECMAScript maakte het terug in sommige opzichten onverenigbaar met eerdere versies van de taal, de update neerkwam op “het breken van het Web,” en dat stakeholders die tegen de wijzigingen werden “verborgen uit het zicht”. Eich reageerde door te stellen dat Wilson “onwaarheden in blogs leek te herhalen” en ontkende dat er pogingen waren om afwijkende meningen te onderdrukken en daagde critici uit om specifieke voorbeelden van incompatibiliteit te geven., Hij wees erop dat Microsoft Silverlight en Adobe AIR vertrouwen op respectievelijk C# en ActionScript 3, die beide groter en complexer zijn dan ECMAScript Edition 3.

5th EditionEdit

Yahoo, Microsoft, Google en andere 4th edition dissenters vormden hun eigen subcomité om een minder ambitieuze update van ECMAScript 3 te ontwerpen, met de voorlopige naam ECMAScript 3.1. Deze editie zou zich richten op beveiliging en bibliotheek updates, met een grote nadruk op compatibiliteit. Na de eerder genoemde publieke sparring, de ECMAScript 3.,1 en ECMAScript 4 teams overeengekomen op een compromis: de twee edities zou worden gewerkt, parallel, met coördinatie tussen de teams om ervoor te zorgen dat ECMAScript 3.1 blijft een strikte subset van ECMAScript 4 in zowel semantiek en syntaxis.

echter, de verschillende filosofieën in elk team resulteerde in herhaalde breuken van de subset regel, en het bleef twijfelachtig dat de ECMAScript 4 dissenters ooit zou ondersteunen of implementeren ECMAScript 4 in de toekomst., Na meer dan een jaar sinds de onenigheid over de toekomst van ECMAScript binnen het Ecma Technical Committee 39, bereikten de twee teams een nieuw compromis in juli 2008: Brendan Eich kondigde aan dat Ecma TC39 zich zou concentreren op het ECMAScript 3.1 (later hernoemd naar ECMAScript, 5th Edition) project met volledige samenwerking van alle partijen, en verkopers zouden zich richten op ten minste twee interoperabele implementaties tegen begin 2009. In April 2009 publiceerde Ecma TC39 het” definitieve ” ontwerp van de vijfde editie en kondigde aan dat het testen van interoperabele implementaties naar verwachting medio juli voltooid zou zijn., Op 3 December 2009 verscheen ECMA-262 5e editie.

6e editie-ECMAScript 2015Edit

de 6e editie, aanvankelijk bekend als ECMAScript 6 (ES6) en later hernoemd naar ECMAScript 2015, werd afgerond in juni 2015. Deze update voegt belangrijke nieuwe syntaxis toe voor het schrijven van complexe applicaties, inclusief class declarations (class Foo { ... }), ES6 modules zoals import * as moduleName from "..."; export const Foo, maar definieert ze semantisch in dezelfde termen als ECMAScript 5 strict mode., Andere nieuwe functies zijn onder andere iterators en for...of lussen, Python-stijl generatoren, pijl functie-expressie (() => {...}), let trefwoorden voor lokale declaraties, const trefwoorden voor constante lokale declaraties, binaire gegevens, getypt arrays, nieuwe collecties (kaarten, sets en WeakMap), beloften, aantal en wiskunde verbeteringen, reflectie, proxy ‘ s (meta-programmeren voor het virtuele objecten en wrappers) en sjabloon letters voor strijkers. De volledige lijst is uitgebreid., Als de eerste” ECMAScript Harmony “specificatie, het is ook bekend als” ES6 Harmony.”

7th Edition-ECMAScript 2016Edit

De 7th edition, officieel bekend als ECMAScript 2016, werd afgerond in juni 2016. De functies omvatten block-scoping van variabelen en functies, vernietigingspatronen (van variabelen), proper tail calls, exponentiation operator ** Voor nummers, await, async sleutelwoorden voor asynchrone programmering, en de Array.prototype.bevat functie.,

De exponentiatieoperator is gelijk aan Math.pow, maar biedt een eenvoudigere syntaxis vergelijkbaar met talen als Python, F#, Perl en Ruby.async /wait werd geprezen als een gemakkelijkere manier om promises te gebruiken en asynchrone code te ontwikkelen.

8e editie-ECMAScript 2017Edit

De 8e editie, officieel bekend als ECMAScript 2017, werd afgerond in juni 2017. De functies omvatten hetObject.waarden, Object.,entries en Object.getOwnPropertyDescriptors functies voor eenvoudige manipulatie van objecten, async/await constructies die generatoren en beloften gebruiken, en extra functies voor concurrency en Atomica.

9e editie-ECMAScript 2018Edit

de 9e editie, officieel bekend als ECMAScript 2018, werd afgerond in juni 2018. Nieuwe functies zijn onder meer rest / spread operators voor objectletters (drie punten: ...identifier), asynchrone iteratie, Promise.prototype.finally en toevoegingen aan RegExp.,

De spread operator maakt het eenvoudig kopiëren van objecteigenschappen mogelijk, zoals hieronder getoond.

10e editie-ECMAScript 2019Edit

de 10e editie, officieel bekend als ECMAScript 2019, werd gepubliceerd in juni 2019. Toegevoegde functies omvatten, maar zijn niet beperkt tot, Array.prototype.flat, Array.prototype.flatMap, wijzigingen in Array.sort en Object.fromEntries.

Array.Sorteer is nu gegarandeerd stabiel, wat betekent dat elementen met dezelfde sortering voorrang in dezelfde volgorde zullen verschijnen in de gesorteerde array., Array.prototype.flat(depth=1) vlakt een array af tot een opgegeven diepte, wat betekent dat alle subarray-elementen (tot de opgegeven diepte) recursief worden samengevoegd.

11e editie-ECMAScript 2020Edit

de 11e editie, officieel bekend als ECMAScript 2020, werd gepubliceerd in juni 2020. Naast nieuwe functies bevat deze versie een BigInt primitief type voor gehele getallen met willekeurige grootte, de nullish coalescing operator en het globalThis object.,

BigInts worden aangemaakt met deBigInt constructor of met de syntaxis10n , waarbij “n” achter het letterlijke getal wordt geplaatst. BigInts staan de representatie en manipulatie toe van gehele getallen voorbij getal.MAX_SAFE_INTEGER, terwijl getallen worden weergegeven door een dubbele precisie 64-bit IEEE 754 waarde., De ingebouwde functies in Math zijn niet compatibel met BigInts; bijvoorbeeld, exponentiatie van BigInts moet worden gedaan met de ** operator in plaats van Math.pow.

The nullish coalescing operator, ??, geeft zijn rechter operand terug als zijn linker zijde null of undefinedis., Dit contrasteert met de|| operator, die “string” zou teruggeven voor alle voorbeelden.

false ?? "string" // -> falseNaN ?? "string" // -> NaNundefined ?? "string" // -> "string"

optionele chaining stelt u in staat om toegang te krijgen tot de geneste knooppunten in een object zonder a en check op elk niveau.

een voorbeeld is const zipcode = person?.adres?.Postcode. Als een van de eigenschappen niet aanwezig is, is zipcode undefined.

ES.NextEdit

ES.,Next is een dynamische naam die verwijst naar wat de volgende versie is op het moment van schrijven. ES.De volgende functies zijn afgewerkte voorstellen (aka “fase 4 voorstellen”) zoals vermeld bij voltooide voorstel dat geen deel uitmaken van een geratificeerde specificatie. De taalcommissie volgt een “living spec” model, dus deze veranderingen maken deel uit van de standaard, en ratificatie is een formaliteit.