Articles

ECMAScript (Norsk)

ECMAScript-spesifikasjonen er en standardisert spesifikasjon av et skriptspråk som er utviklet av Brendan Eich av Netscape; i utgangspunktet navngitt Mocha, så LiveScript, og til slutt JavaScript. I desember 1995, Sun Microsystems og Netscape annonsert JavaScript i en pressemelding. I November 1996, Netscape annonsert et møte av Ecma International standards organization å fremme standardisering av JavaScript. Den første utgaven av ECMA-262 ble vedtatt av Ecma generalforsamlingen i juni 1997. Flere utgaver av språket som standard har blitt publisert siden da., Navnet «ECMAScript» var et kompromiss mellom de organisasjoner som er involvert i å standardisere språket, spesielt Netscape og Microsoft, som tvister dominerte tidlig standarder økter. Eich kommentert at «ECMAScript var alltid en uønsket handel navn som høres ut som en hud sykdom.»ECMAScript har vært formalisert gjennom operasjonell semantikk av arbeidet ved Stanford University og Institutt for Databehandling, Imperial College London for sikkerhet analyse og standardisering.,

Både JavaScript og JScript svarer til ECMAScript spesifikasjon, mens det også gir ekstra funksjoner som ikke er beskrevet i spesifikasjonen.

VersionsEdit

Det er elleve utgaver av ECMA-262 publisert. Arbeid på versjon 11 av standarden ble ferdigstilt i juni 2020.,

ECMAScript versjon historie
Edition Dato publisert Navn – Endringer fra tidligere utgave Redaktør
1 juni 1997 Første utgave Guy L. Steele Jr.,998 Redaksjonelle endringer for å holde spesifikasjon fullt ut i samsvar med ISO/IEC 16262 internasjonal standard Mike Cowlishaw
3 desember 1999 Lagt regulære uttrykk, bedre streng håndtering, ny kontroll uttalelser, try/catch unntak håndtering, strammere definisjon av feil, formatering for numeriske utgang, og andre forbedringer Mike Cowlishaw
4 Forlatt (siste utkast til 30. juni 2003) Fjerde Utgave ble forlatt, på grunn av politiske forskjeller vedrørende språk kompleksitet., Mange har foreslått for den Fjerde Utgaven har vært helt falt ned, og noen ble innlemmet i den sjette utgaven.
5 desember 2009 Legger til «strenge-modus,» et delsett ment å gi en mer grundig feilkontroll og unngå utsatt for feil-konstruksjoner. Klargjør mange uklarheter i 3rd edition spesifikasjon, og har plass til atferd i den virkelige verden implementeringer som skilte seg konsekvent fra denne spesifikasjonen., Legger til noen nye funksjoner, som for eksempel getters og bidra, bibliotek støtte for JSON og mer komplett refleksjon på objektet egenskaper. Pratap Lakshman, Allen Wirfs-Brock
5.1 juni 2011 Denne utgaven 5.1 av ECMAScript standard, er fullt ut i samsvar med den tredje utgaven av den internasjonale standarden ISO/IEC 16262:2011., > Se 9. Utgave – 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 publisert ECMA-357 standard som definerer en utvidelse av ECMAScript, kjent som ECMAScript for XML (E4X)., Ecma har også definert en «Kompakt Profil» for ECMAScript – kjent som ES-CP, eller ECMA-327 – som ble designet for ressurs-begrenset enheter, som ble trukket ut i 2015.

4th Edition (forlatt)Edit

Den foreslåtte fjerde utgaven av ECMA-262 (ECMAScript 4 eller ES4) ville ha vært den første store oppdateringen til ECMAScript siden den tredje utgaven ble utgitt i 1999. Spesifikasjonen (sammen med en referanse implementering) var opprinnelig rettet for gjennomføring av oktober 2008. Det første utkastet var datert februar 1999., En oversikt over språk ble utgitt av arbeidsgruppen på oktober 23, 2007.

Av August 2008, ECMAScript 4. utgave forslag hadde blitt trappet ned i et prosjekt med kodenavn ECMAScript Harmoni. Funksjoner under diskusjon for Harmoni på den tiden var:

  • klasser,
  • en modul system,
  • valgfri type kommentarer og statisk typing, sannsynligvis ved hjelp av en strukturell type system
  • generatorer og iterators,
  • destructuring oppdrag, og
  • algebraiske datatyper.,

Den hensikt av disse funksjonene var dels å bedre støtte programmering i det store, og til å tillate å ofre noen av script ‘ s evne til å være dynamisk for å forbedre ytelsen. For eksempel, Tamarin – den virtuelle maskinen for ActionScript, utviklet, og åpen kildekode av Adobe – har akkurat-i-tide samling (JIT) støtte for bestemte klasser av skript.

I tillegg til å innføre nye funksjoner, noen ES3 feil ble foreslått å være fast i utgave 4. Disse reparasjonene og andre, og støtte for JSON-koding/dekoding, har blitt kastet inn i ECMAScript, 5. Utgave spesifikasjon.,

Arbeidet startet på Utgave 4 etter ES-CP (Kompakt Profil) – spesifikasjonen ble fullført, og fortsatte i ca 18 måneder hvor langsom fremgang ble gjort for å balansere teori av Netscape ‘ s JavaScript 2-spesifikasjon med gjennomføringen opplevelse av Microsoft JScript .NET. Etter noen tid, skiftet fokus til ECMAScript for XML (E4X) standard. Oppdateringen har ikke vært uten kontrovers. I slutten av 2007, en debatt mellom Eich, senere Mozilla Foundation er CTO, og Chris Wilson, Microsoft ‘ s plattform arkitekt for Internet Explorer, ble offentliggjort på en rekke blogger., Wilson advarte om at fordi de foreslåtte endringene til ECMAScript gjort det bakover uforenlig i noen henseender til tidligere versjoner av språket, oppdateringen var «breaking the Web», og at interessenter som er imot de endringene var å være «skjult». Eich svarte med å si at Wilson syntes å være «gjenta løgner i blogger» og benektet at det var forsøk på å undertrykke dissens og utfordret kritikerne til å gi konkrete eksempler på inkompatibilitet., Han pekte på at Microsoft Silverlight og Adobe AIR stole på C# og ActionScript 3, henholdsvis, som begge er større og mer komplekse enn ECMAScript Utgave 3.

5. EditionEdit

Yahoo, Microsoft, Google, og andre 4th edition dissentere dannet sin egen underkomité til å utforme en mindre ambisiøs oppdatering av ECMAScript 3, foreløpig kalt ECMAScript 3.1. Denne utgaven vil fokusere på sikkerhet og bibliotek oppdateringer, med en stor vekt på kompatibilitet. Etter nevnte offentlige sparring, ECMAScript 3.,1 og ECMAScript 4 lag er enige om et kompromiss: to utgaver vil bli jobbet på i parallell, med koordinering mellom lagene for å sikre at ECMAScript 3.1 er fortsatt en streng delsett av ECMAScript 4 i både semantikk og syntaks.

Imidlertid de ulike filosofier i hvert team resulterte i gjentatte brekkasje av delsett regel, og det var tvilsomt at ECMAScript 4 dissentere noensinne ville støtte eller implementere ECMAScript 4 i fremtiden., Etter over et år siden uenighet om fremtiden for ECMAScript i Ecma-Teknisk Komite 39, de to lagene nådd et nytt kompromiss i juli 2008: Brendan Eich annonsert at Ecma TC39 ville fokusere arbeidet på ECMAScript 3.1 (senere omdøpt til ECMAScript, 5. Utgave) prosjekt med fullt samarbeid fra alle parter, og leverandører vil målrette minst to interoperable implementeringer av tidlig i 2009. I April 2009, Ecma TC39 publisert den «endelige» utkast av 5. utgave, og annonserte at testing av interoperable implementeringer var ventet å være ferdig innen midten av juli., Desember 3, 2009, ECMA-262 5. utgave ble publisert.

6th Edition – ECMAScript 2015Edit

Den 6. utgave, først kjent som ECMAScript 6 (ES6) da og senere omdøpt til ECMAScript 2015, ble avsluttet i juni 2015. Denne oppdateringen legger til vesentlige nye syntaksen for å skrive komplekse applikasjoner, inkludert klasse erklæringer (class Foo { ... }), ES6 moduler som import * as moduleName from "..."; export const Foo, men definerer dem semantisk på samme vilkår som ECMAScript 5 strenge modus., Andre nye funksjoner inkluderer iterators og for...of loops, Python-stil generatorer, pil funksjon uttrykk (() => {...}), let søkeord for lokale erklæringer, const søkeord for konstant lokale erklæringer, binære data, skrevet av matriser, nye samlinger (kart, sett og WeakMap), lover, antall og matematikk forbedringer, refleksjon, fullmakter (metaprogramming for virtuelle objekter og wraps) og mal verdiane for strykere. Den komplette listen er omfattende., Som den første «ECMAScript Harmoni» spesifikasjon, det er også kjent som «ES6 Harmoni.»

7th Edition – ECMAScript 2016Edit

The 7th edition, offisielt kjent som ECMAScript 2016, ble avsluttet i juni 2016. Dens funksjoner inkluderer blokk-scoping av variabler og funksjoner, destructuring mønstre (variabler), korrekt hale samtaler, exponentiation operatør ** for tall, await, async søkeord for asynkron programmering, og Array.prototype.inneholder – funksjonen.,

exponentiation operatør tilsvarer Matematikk.pow, men gir en enklere syntaks som ligner språk som Python, F#, Perl, Ruby.async /venter som ble hyllet som en enklere måte å bruke lover og utvikle asynkron kode.

8th Edition – ECMAScript 2017Edit

The 8th edition, offisielt kjent som ECMAScript 2017, ble avsluttet i juni 2017. Dens funksjoner inkluderer Objekt.verdier, Objekt.,oppføringer og Objekt.getOwnPropertyDescriptors funksjoner for enkel manipulering av Objekter, async/await konstruksjoner som bruker generatorer og lover, og ekstra funksjoner for concurrency og atomics.

9. Utgave – ECMAScript 2018Edit

Den 9. utgaven, offisielt kjent som ECMAScript 2018, ble avsluttet i juni 2018. Nye funksjoner inkluderer hvile/spredt operatører for objekt-verdiane (tre prikker: ...identifier), asynkrone versjonen Promise.prototype.finally og tillegg til RegExp.,

spredningen operatøren gir mulighet for enkel kopiering av objektet egenskaper, som vist nedenfor.

10th Edition – ECMAScript 2019Edit

Den 10. utgaven, offisielt kjent som ECMAScript 2019, ble publisert i juni 2019. Lagt til funksjoner inkluderer, men er ikke begrenset til, Array.prototype.flat, Array.prototype.flatMap forandringer til Array.sort og Object.fromEntries.

Array.sorter er nå garantert å være stabil, noe som betyr at elementer med samme sortering forrang vises i samme rekkefølge sortert array., Array.prototype.flat(depth=1) flater en matrise til en bestemt dybde, noe som betyr at alle subarray elementer (opp til angitt dybde) er sammensatt med undermapper.

11th Edition – ECMAScript 2020Edit

Den 11. utgaven, offisielt kjent som ECMAScript 2020, som ble publisert i juni 2020. I tillegg til nye funksjoner, denne versjonen inneholder en BigInt primitive typen for vilkårlig størrelse heltall, den nullish coalescing operatør, og globalThis objekt.,

BigInts opprettes enten med BigInt – konstruktør eller med syntaksen 10n, der «n» er plassert etter antall bokstavelig. BigInts tillater representasjon og manipulasjon av heltall utover Tall.MAX_SAFE_INTEGER, mens Tallene er representert med en dobbel presisjon 64-bit-IEEE 754 verdi., Den innebygde funksjoner i Matematikk ikke kompatibel med BigInts, for eksempel, exponentiation av BigInts må gjøres med ** – operatøren i stedet for Matematikk.pow.

nullish coalescing operatør, ??, returnerer sin høyre operand når sin venstre side er ugyldig eller udefinert., Dette står i kontrast med || – operatoren, som ville vende tilbake «streng» for alle eksemplene.

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

Ekstra kjeding gir deg tilgang for nestede noder i et objekt uten å ha en OG sjekke på hvert nivå.

Et eksempel er const zipcode = person?.adresse?.zipcode. Hvis noen av de egenskaper som ikke er til stede, zipcode skal udefinert.

ES.NextEdit

ES.,Neste er en dynamisk navn som refererer til hva den neste versjonen er i skrivende stund. ES.Neste funksjonene er ferdig forslag (aka «stage 4 forslag») som er nevnt på ferdig forslag som ikke er en del av en godkjent spesifikasjon. Språket komiteen følger en «levende spec» – modellen, slik at disse endringene er en del av standard, og ratifisering er en formalitet.