ECMAScript (Dansk)
ECMAScript-specifikationen er en standardiseret specifikation af et scriptsprog udviklet af Brendan Eich fra Netscape; oprindeligt navngivet Mokka, derefter LiveScript og endelig JavaScript. I December 1995 annoncerede Sun Microsystems og Netscape JavaScript i en pressemeddelelse. I November 1996, Netscape annoncerede et møde i Ecma International standards organisation til at fremme standardiseringen af JavaScript. Den første udgave af ECMA-262 blev vedtaget af Ecma ‘ s Generalforsamling i juni 1997. Flere udgaver af sprogstandarden er blevet offentliggjort siden da., Navnet “ECMAScript” var et kompromis mellem de organisationer, der var involveret i standardisering af sproget, især Netscape og Microsoft, hvis tvister dominerede de tidlige standardsessioner. Eich kommenterede ,at ” ECMAScript altid var et uønsket handelsnavn, der lyder som en hudsygdom.”ECMAScript er blevet formaliseret gennem operationel semantik ved arbejde ved Stanford University og Department of Computing, Imperial College London til sikkerhedsanalyse og standardisering.,
både JavaScript og JScript er i overensstemmelse med ECMAScript-specifikationen, mens de også leverer yderligere funktioner, der ikke er beskrevet i specifikationen.
VersionsEdit
Der er elleve udgaver af ECMA-262 offentliggjort. Arbejdet med version 11 af standarden blev afsluttet i juni 2020.,
Edition | Dato offentliggjort | Navn | Ændringer fra den tidligere udgave | Editor | |||
---|---|---|---|---|---|---|---|
1 | juni 1997 | Første udgave | Guy L. Steele Jr.,998 | Redaktionelle ændringer for at holde den specifikation, som er i fuld overensstemmelse med ISO/IEC 16262 international standard | Mike Cowlishaw | ||
3 | December 1999 | Tilføjet regulære udtryk, bedre streng håndtering, nye kontrol-erklæringerne, try/catch exception handling, strammere definition af fejl, formatering for numeriske output, og andre forbedringer | Mike Cowlishaw | ||||
4 | Opgivet (sidste udkast til 30. juni 2003) | Fjerde Udgave blev opgivet på grund af politiske uenigheder om sprog kompleksitet., Mange funktioner, der er foreslået til den fjerde udgave, er blevet helt droppet; nogle blev indarbejdet i den sjette udgave. | |||||
5 | December 2009 | tilføjer “streng tilstand”, en delmængde, der har til formål at give mere grundig fejlkontrol og undgå fejlbehæftede konstruktioner. Præciserer mange uklarheder i 3.udgave specifikation, og rummer adfærd virkelige verden implementeringer, der adskiller sig konsekvent fra denne specifikation., Tilføjer nogle nye funktioner, såsom getters og setters, bibliotek støtte til JSON, og mere komplet refleksion over objektegenskaber. | Pratap Lakshman, Allen Wirfs-Brock | ||||
5.1 | juni 2011 | Denne udgave 5.1 af ECMAScript-standarden er helt i tråd med den tredje udgave af den internationale standard ISO/IEC 16262:2011., | Se 9th Edition – ECMAScript 2018 | Brian Terlson | |||
10 | juni 2019 | ECMAScript 2019 (ES2019) | Se 10th Edition – ECMAScript 2019 | Brian Terlson, Bradley Farias, Jordan Harband | |||
11 | juni 2020 | ECMAScript 2020 (ES2020) | Se 11th Edition – ECMAScript 2020 | Jordan Harband, Kevin Smith |
I juni 2004, Ecma International offentliggjort ECMA-357-standard, som definerer en udvidelse til den amerikanske borgerkrig, der er kendt som den amerikanske borgerkrig til XML (E4X)., Ecma definerede også en” kompakt profil ” til ECMAScript – kendt som ES-CP eller ECMA 327 – der var designet til ressourcebegrænsede enheder, som blev trukket tilbage i 2015.
4th Edition (opgivet)Edit
Den foreslåede fjerde udgave af ECMA-262 (ECMAScript 4 eller ES4) ville have været den første store opdatering til ECMAScript, da den tredje udgave blev udgivet i 1999. Specifikationen (sammen med en referenceimplementering) var oprindeligt beregnet til færdiggørelse i oktober 2008. Det første udkast blev dateret februar 1999., En oversigt over sproget blev frigivet af arbejdsgruppen den 23.oktober 2007.
i August 2008 var ECMAScript 4th edition-forslaget blevet skaleret tilbage til et projekt med kodenavnet ECMAScript Harmony. Funktioner under diskussion i Harmoni på det tidspunkt i prisen:
- klasser,
- et modul-system,
- valgfri skrive kommentarer og statisk skrive, formentlig ved hjælp af et strukturelt system,
- generatorer og iteratorer,
- destruktureringsdeklaration opgave, og
- algebraisk data typer.,
hensigten med disse funktioner var dels at bedre støtte programmering i det store, og at tillade at ofre nogle af scriptets evne til at være dynamisk for at forbedre ydeevnen. For eksempel, Tamarin – den virtuelle maskine til ActionScript, udviklet og indkøbt af Adobe – har just-in-time-kompilering (JIT) støtte til visse klasser af scripts.
ud over at introducere nye funktioner blev nogle ES3-fejl foreslået at blive rettet i udgave 4. Disse rettelser og andre, og støtte til JSON kodning / dekodning, er blevet foldet ind i ECMAScript, 5.udgave specifikation.,
Arbejde i gang om Edition efter 4 ES-CP (Kompakt Profil) specifikation blev afsluttet, og fortsatte i ca 18 måneder, hvor langsomme fremskridt, der blev gjort for at balancere teori af netscapes JavaScript-2-specifikationen med erfaringerne fra gennemførelsen af Microsoft JScript .NETTO. Efter noget tid, blev fokus flyttet til ECMAScript for XML (E4X) standard. Opdateringen har ikke været uden kontroverser. I slutningen af 2007, en debat mellem Eich, der senere blev til Mozilla Foundation ‘ s CTO, og Chris Wilson, Microsofts platform arkitekt til Internet Explorer, blev offentliggjort på en række blogs., Becauseilson advarede om, at fordi de foreslåede ændringer af ECMAScript gjorde det baglæns uforeneligt i nogle henseender til tidligere versioner af sproget, udgjorde opdateringen “at bryde Internettet”, og at interessenter, der var imod ændringerne, blev “skjult”. Eich svarede ved at oplyse, at .ilson syntes at være “gentage usandheder i blogs” og benægtede, at der var forsøg på at undertrykke dissens og udfordrede kritikere til at give specifikke eksempler på uforenelighed., Han påpegede, at Microsoft Silverlight og Adobe AIR er afhængige af henholdsvis C# og ActionScript 3, som begge er større og mere komplekse end ECMAScript Edition 3.
5.EditionEdit
Yahoo, Microsoft, Google og andre 4. udgave dissentere dannede deres eget underudvalg til at designe en mindre ambitiøs opdatering af ECMAScript 3, foreløbigt navngivet ECMAScript 3.1. Denne udgave vil fokusere på sikkerheds-og biblioteksopdateringer med stor vægt på Kompatibilitet. Efter den førnævnte offentlige sparring, ECMAScript 3.,1 og ECMAScript 4 hold blevet enige om et kompromis: de to udgaver der ville blive arbejdet på, parallelt med koordinering mellem holdene til at sikre, at ECMAScript 3.1 fortsat en streng delmængde af ECMAScript 4 i både semantik og syntaks.
de forskellige filosofier i hvert hold resulterede imidlertid i gentagne brud på undersæt-reglen, og det forblev tvivlsomt, at ECMAScript 4-dissenterne nogensinde ville støtte eller implementere ECMAScript 4 i fremtiden., Efter over et år siden, at der var uenighed om den fremtidige ECMAScript i Ecma Teknisk Udvalg, 39, de to hold har nået et nyt kompromis i juli 2008: Brendan Eich meddelte, at Ecma TC39 ville fokusere arbejde på ECMAScript 3.1 (senere omdøbt til ECMAScript, 5th Edition) projekt med fuldt samarbejde fra alle parter, og sælgere, der ville målet om mindst to interoperable implementeringer senest i begyndelsen af 2009. I April 2009 offentliggjorde Ecma tc39 det” endelige ” udkast til den 5.udgave og meddelte, at test af interoperable implementeringer forventedes afsluttet i midten af juli., Den 3. December 2009 blev ECMA-262 5. udgave offentliggjort.
6th Edition – ECMAScript 2015Edit
6. udgave, oprindeligt kendt som ECMAScript 6 (ES6) og derefter senere omdøbt til ECMAScript 2015, blev afsluttet i juni 2015. Denne opdatering tilføjer nye væsentlige syntaks for at skrive komplekse applikationer, herunder klasse-erklæringer (class Foo { ... }
), ES6 moduler som import * as moduleName from "..."; export const Foo
, men definerer dem semantisk i samme vilkår som ECMAScript 5 strenge., Andre nye funktioner omfatter iteratorer og for...of
sløjfer, Python-style-generatorer, pil funktion udtryk (() => {...}
), let
søgeord for lokale erklæringer, const
søgeord for konstant lokale erklæringer, binære data, typed arrays, nye samlinger (kort sæt, og WeakMap), løfter, tal og matematik forbedringer, refleksion, fuldmagter (metaprogramming for virtuelle objekter og indpakning) og skabelon konstanter for strygere. Den komplette liste er omfattende., Som den første “ECMAScript Harmony” specifikation, det er også kendt som “ES6 Harmony.”
7.udgave – ECMAScript 2016Edit
den 7. udgave, officielt kendt som ECMAScript 2016, blev afsluttet i Juni 2016. Dens funktioner omfatter blok-scoping af variabler og funktioner, destruktureringsdeklaration mønstre (variabler), korrekt hale opkald, eksponentiering operatør **
for tal, await
async
søgeord til asynkron programmering, og Array.prototype.inkluderer
funktion.,
eksponentieringsoperatøren svarer til matematik.pow
, men giver en enklere syntaks svarende til sprog som Python, F#, Perl og Ruby.async
/venter
blev hyldet som en nemmere måde at bruge løfter og udvikle asynkron kode.
8.udgave – ECMAScript 2017Edit
den 8. udgave, officielt kendt som ECMAScript 2017, blev afsluttet i Juni 2017. Dens funktioner omfatterobjekt.værdier
, objekt.,poster
ogobjekt.getOwnPropertyDescriptors
funktioner for nem manipulation af Objekter, async/await
konstruktioner, der anvender generatorer og løfter, og yderligere funktioner for samtidighed og atomics.
9.udgave – ECMAScript 2018Edit
den 9. udgave, officielt kendt som ECMAScript 2018, blev afsluttet i juni 2018. Nye funktioner omfatter resten/spredt operatører for objekt konstanter (tre prikker: ...identifier
), asynkrone iteration, Promise.prototype.finally
og tilføjelser til RegExp.,
spredningsoperatøren giver mulighed for nem kopiering af objektegenskaber, som vist nedenfor.
10.udgave – ECMAScript 2019Edit
den 10. udgave, officielt kendt som ECMAScript 2019, blev offentliggjort i juni 2019. Tilføjet funktioner omfatter, men er ikke begrænset til, Array.prototype.flat
Array.prototype.flatMap
, ændringer Array.sort
og Object.fromEntries
.
Array.sortering
er nu garanteret at være stabil, hvilket betyder, at elementer med samme sortering forrang vises i samme rækkefølge i den sorterede array., Array.prototype.flat(depth=1)
flader et array til en bestemt dybde, hvilket betyder, at alle subarray elementer (op til den angivne dybde) er sammenkædet rekursivt.
11.udgave – ECMAScript 2020Edit
den 11. udgave, officielt kendt som ECMAScript 2020, blev offentliggjort i juni 2020. Ud over nye funktioner inkluderer denne version enBigInt
primitiv type for vilkårlige størrelser, den nullish coalescing-operatør og globalThis-objektet.,
BigInts oprettes enten med BigInt
konstruktør eller med syntaksen 10n
“, hvor “n” er placeret efter antal bogstavelig. BigInts tillader repræsentation og manipulation af heltal ud over nummer.Ma ._safe_integer
, mens tal er repræsenteret ved en dobbelt præcision 64-bit IEEE 754 værdi., Den indbyggede funktioner i Math
er ikke kompatibel med BigInts; for eksempel, potensopløftning af BigInts skal gøres med **
operatør i stedet for Math.po.
.
den nullish coalescing operatør,??
, returnerer dens højre operand, når dens venstre side er null
eller udefineret
., Dette står i kontrast til operatøren ||
, som ville returnere “string” for alle eksemplerne.
false ?? "string" // -> falseNaN ?? "string" // -> NaNundefined ?? "string" // -> "string"
valgfri kæde giver dig adgang til de indlejrede noder i et objekt uden at have en og kontrollere på hvert niveau.
et eksempel er const zipcode = person?.adresse?.Postnummer
. Hvis nogen af egenskaberne ikke er til stede, vil Postnummer
være udefineret
.
ES.Ne .tedit
ES.,Næste er et dynamisk navn, der henviser til, hvad den næste version er på tidspunktet for skrivningen. ES.Næste funktioner er færdige forslag (aka “fase 4 forslag”) som anført på færdige forslag, der ikke er en del af en ratificeret specifikation. Sprogudvalget følger en” levende spec ” – model, så disse ændringer er en del af standarden, og ratificering er en formalitet.