Articles

ECMAScript (Română)

specificația ECMAScript este o specificație standardizată a unui limbaj de scripting dezvoltat de Brendan Eich de Netscape; inițial numit Mocha, apoi LiveScript, și în cele din urmă JavaScript. În decembrie 1995, Sun Microsystems și Netscape au anunțat JavaScript într-un comunicat de presă. În noiembrie 1996, Netscape a anunțat o întâlnire a Organizației Internaționale de standarde Ecma pentru a avansa standardizarea JavaScript. Prima ediție a ECMA-262 a fost adoptată de Adunarea Generală a Ecma în iunie 1997. De atunci au fost publicate mai multe ediții ale standardului lingvistic., Numele „ECMAScript” a fost un compromis între organizațiile implicate în standardizarea limbii, în special Netscape și Microsoft, ale căror dispute au dominat sesiunile de standarde timpurii. Eich a comentat că ” ECMAScript a fost întotdeauna un nume comercial nedorit care sună ca o boală a pielii.”ECMAScript a fost formalizat prin semantica operațională prin munca la Universitatea Stanford și Departamentul de calcul, Imperial College London pentru analiza și standardizarea securității.,

atât JavaScript, cât și JScript sunt conforme cu specificația ECMAScript, oferind, de asemenea, funcții suplimentare care nu sunt descrise în specificație.

VersionsEdit

există unsprezece ediții ale ECMA-262 publicate. Lucrările la versiunea 11 a standardului au fost finalizate în iunie 2020.,

ECMAScript versiunea istorie
Edition Data publicării Nume Modificări la prealabilă a ediție Editor
1 iunie 1997 Prima ediție Tip L. Steele Jr.,998 Editorial modificările să țină caietul de sarcini pe deplin aliniat cu standardul ISO/IEC 16262 standard internațional Mike Cowlishaw
3 decembrie 1999 Adaugat expresii regulate, mai bine șir de manipulare, noi declarații de control, try/catch excepție de manipulare, o definiție mai riguroasă de erori, formatarea pentru numerică de ieșire, și alte accesorii Mike Cowlishaw
4 Abandonat (ultimul proiect de 30 iunie 2003) de-a Patra Ediție a fost abandonat, din cauza diferențelor politice privind limba de complexitate., Multe caracteristici propuse pentru a patra ediție au fost complet abandonate; unele au fost încorporate în a șasea ediție.
5 decembrie 2009 Adaugă „modul strict”, un subset destinat să ofere o verificare mai amănunțită a erorilor și să evite construcțiile predispuse la erori. Clarifică multe ambiguități în caietul de sarcini ediția a 3-A, și acomodează comportamentul implementări din lumea reală, care diferă în mod constant de caietul de sarcini., Adaugă unele caracteristici noi, cum ar fi getters și setters, suport bibliotecă pentru JSON, și reflecție mai completă asupra proprietăților obiectului. Pratap Lakshman, Allen Wirfs-Brock
5.1 iunie 2011 Această ediție 5.1 de Argumente standard este pe deplin aliniat cu cea de-a treia ediție a standardului internațional ISO/IEC 16262:2011., a se Vedea Ediția a 9-a – ECMAScript 2018 Brian Terlson
10 iunie 2019 ECMAScript 2019 (ES2019) a se Vedea Ediția a 10 – ECMAScript 2019 Brian Terlson, Bradley Farias, Jordan Harband
11 iunie 2020 ECMAScript 2020 (ES2020) Vezi 11-a Ediție – ECMAScript 2020 Jordan Harband, Kevin Smith

În iunie 2004, Ecma International a publicat ECMA-357 standard, definind o extensie a ECMAScript, cunoscut sub numele de ECMAScript pentru XML (E4X)., Ecma a definit, de asemenea, un” profil Compact ” pentru ECMAScript – cunoscut sub numele de ES-CP sau ECMA 327 – care a fost proiectat pentru dispozitive cu constrângeri de resurse, care a fost retras în 2015.

4th Edition (abandonat)Edit

a patra ediție propusă a ECMA-262 (ECMAScript 4 sau ES4) ar fi fost prima actualizare majoră a ECMAScript de la a treia ediție a fost publicată în 1999. CAIETUL DE SARCINI (împreună cu o punere în aplicare de referință) a fost inițial vizat pentru finalizare până în octombrie 2008. Primul proiect a fost datat februarie 1999., O prezentare generală a limbii a fost lansată de grupul de lucru pe 23 octombrie 2007.

până în August 2008, propunerea ECMAScript 4th edition a fost redimensionată într-un proiect cu nume de cod ECMAScript Harmony. Caracteristici în discuție pentru Armonie în momentul incluse:

  • cursuri,
  • un modul de sistem,
  • tipul de opțional adnotări și statice, dactilografiere, folosind, probabil, un tip structural sistemul,
  • generatoare și iteratori,
  • destructurare misiune, și
  • algebrice tipuri de date.,intenția acestor caracteristici a fost parțial de a sprijini mai bine programarea în mare și de a permite sacrificarea unei părți din capacitatea scriptului de a fi dinamic pentru a îmbunătăți performanța. De exemplu, Tamarin – mașina virtuală pentru ActionScript, dezvoltată și open-source de Adobe – are suport just-in-time compilation (JIT) pentru anumite clase de scripturi.în plus față de introducerea de noi caracteristici, unele bug-uri ES3 au fost propuse pentru a fi rezolvate în ediția 4. Aceste corecții și altele, și suport pentru codare/decodare JSON, au fost pliate în caietul de sarcini ECMAScript, ediția a 5-a.,

    Activitatea a început la Ediția a 4 după ES-CP (Profil Compact) caietul de sarcini a fost finalizat, și a continuat timp de aproximativ 18 luni în cazul în care progresul lent a fost făcută de echilibrare teoria Netscape JavaScript 2 caietul de sarcini cu experiență în punerea în aplicare Microsoft JScript .NET. După un timp, accentul s-a mutat la ECMAScript pentru XML (E4X) standard. Actualizarea nu a fost lipsită de controverse. La sfârșitul anului 2007, o dezbatere între Eich, mai târziu CTO-ul Fundației Mozilla, și Chris Wilson, arhitectul platformei Microsoft pentru Internet Explorer, a devenit publică pe o serie de bloguri., Wilson a avertizat că, deoarece modificările propuse la ECMAScript au făcut-o înapoi incompatibilă în unele privințe cu versiunile anterioare ale limbii, actualizarea sa ridicat la „ruperea Web-ului” și că părțile interesate care s-au opus modificărilor au fost „ascunse de vedere”. Eich a răspuns afirmând că Wilson părea să „repete falsurile în bloguri” și a negat că a existat o încercare de a suprima disidența și a provocat criticii să dea exemple specifice de incompatibilitate., El a subliniat că Microsoft Silverlight și Adobe AIR se bazează pe C# și ActionScript 3, ambele fiind mai mari și mai complexe decât ECMAScript Edition 3.Yahoo, Microsoft, Google și alți disidenți ai ediției a 4-a și-au format propriul subcomitet pentru a proiecta o actualizare Mai puțin ambițioasă a ECMAScript 3, denumită provizoriu ECMAScript 3.1. Această ediție s-ar concentra pe actualizările de securitate și bibliotecă, cu un accent deosebit pe compatibilitate. După sparring publice menționate mai sus, ECMAScript 3.,Echipele 1 și ECMAScript 4 au convenit asupra unui compromis: cele două ediții vor fi lucrate, în paralel, cu coordonarea între Echipe pentru a se asigura că ECMAScript 3.1 rămâne un subset strict al ECMAScript 4 atât în semantică, cât și în sintaxă.

    cu toate acestea, filozofiile diferite din fiecare echipă au dus la ruperi repetate ale regulii subsetului și a rămas îndoielnic că disidenții ECMAScript 4 vor susține sau implementa vreodată ECMAScript 4 în viitor., După peste un an de la dezacord asupra viitorului ECMAScript în Ecma Comitetul Tehnic de 39 de ani, cele două echipe au ajuns la un nou compromis in iulie 2008: Brendan Eich a anunțat că Ecma TC39 se va concentra munca pe ECMAScript 3.1 (mai târziu redenumit ECMAScript, Editia a 5-a), proiect cu o colaborare deplină a tuturor părților, și furnizori va viza cel puțin două interoperabile implementări de la începutul anului 2009. În aprilie 2009, Ecma TC39 a publicat proiectul „final” al celei de-a 5-a ediții și a anunțat că testarea implementărilor interoperabile urma să fie finalizată până la jumătatea lunii iulie., La 3 decembrie 2009, a fost publicată ediția a 5-a ECMA-262.

    ediția a 6-a-ECMAScript 2015edit

    ediția a 6-A, inițial cunoscută sub numele de ECMAScript 6 (ES6), apoi redenumită ulterior în ECMAScript 2015, a fost finalizată în iunie 2015. Această actualizare adaugă noi semnificative sintaxa pentru scrierea de aplicații complexe, inclusiv clasa de declarații (class Foo { ... }), ES6 module, cum ar fi import * as moduleName from "..."; export const Foo, ci le definește semantic în aceleași condiții ca și ECMAScript 5 modul strict., Alte caracteristici noi includ iteratori și for...of bucle, Python-stil generatoare, săgeată funcția de exprimare (() => {...}), let cuvinte cheie pentru locale declarații, const cuvinte cheie pentru constanta locale declarații, date binare, introduce tablouri, colecții noi (hărți, seturi și WeakMap), promisiuni, numărul și matematica îmbunătățiri, reflecție, proxy-uri (metaprogramare pentru obiecte virtuale și ambalaje) și șablon literale pentru siruri de caractere. Lista completă este extinsă., Ca prima specificație „ECMAScript Harmony”, este cunoscută și sub numele de ” ES6 Harmony.”

    ediția a 7-a-ECMAScript 2016edit

    ediția a 7-A, cunoscută oficial ca ECMAScript 2016, a fost finalizată în iunie 2016. Caracteristicile sale includ bloc-definire de variabile și funcții, de destructurare a modelelor (de variabile), o coada de apeluri, exponentiala operator ** pentru numere, await, async cuvinte cheie pentru programare asincronă, iar Matrice.prototip.include funcția.,

    operatorul de exponentiere este echivalent cuMath.pow, dar oferă o sintaxă mai simplă similară cu limbi precum Python, F#, Perl și Ruby.async /așteaptă a fost salutat ca o cale mai ușoară de a folosi promisiuni și de a dezvolta cod asincron.

    ediția a 8-a-ECMAScript 2017edit

    ediția a 8-A, cunoscută oficial ca ECMAScript 2017, a fost finalizată în iunie 2017. Caracteristicile sale includ obiect.valorile,obiect.,intrări și obiect.getOwnPropertyDescriptors funcții pentru manipularea ușoară de Obiecte, async/await constructii care folosesc generatoare și promisiuni, și caracteristici suplimentare pentru concurenta si atomics.

    ediția a 9-a-ECMAScript 2018edit

    ediția a 9-A, cunoscută oficial ca ECMAScript 2018, a fost finalizată în iunie 2018. Noile caracteristici includ restul/răspândirea operatorii de obiect literali (trei puncte: ...identifier), asincron iterație, Promise.prototype.finally și completări la RegExp.,

    operatorul de răspândire permite copierea ușoară a proprietăților obiectului, așa cum se arată mai jos.

    ediția a 10-a-ECMAScript 2019edit

    ediția a 10-A, cunoscută oficial ca ECMAScript 2019, a fost publicată în iunie 2019. Adăugat caracteristici includ, dar nu sunt limitate la, Array.prototype.flat, Array.prototype.flatMap, modificări la Array.sort și Object.fromEntries.

    matrice.sort este acum garantat a fi stabil, ceea ce înseamnă că elementele cu aceeași prioritate de sortare vor apărea în aceeași ordine în tabloul sortat., Array.prototype.flat(depth=1) aplatizează o matrice la o anumită adâncime, în sensul că toate subarray elemente (până la adâncimea specificată) sunt concatenate recursiv.

    ediția a 11 – a-ECMAScript 2020edit

    ediția a 11-A, cunoscută oficial ca ECMAScript 2020, a fost publicată în iunie 2020. În plus față de noi funcții, această versiune include un BigInt tip primitiv de arbitrare-dimensiuni numere întregi, de nullish coalescență operator, și globalThis obiect.,

    BigInts sunt create fie cu BigInt constructor sau cu sintaxa 10n, unde „n” este plasat după numărul literal. BigInts permit reprezentarea și manipularea numerelor întregi dincolo de număr.MAX_SAFE_INTEGER, în timp ce numerele sunt reprezentate de o valoare dublă de precizie pe 64 de biți IEEE 754., Built-in functii în Matematica nu sunt compatibile cu BigInts; de exemplu, exponentiala de BigInts trebuie să fie făcut cu ** operator în loc de Matematica.pow.

    operatorul nullish coalescing, ??, se întoarce de partea sa dreaptă operand atunci când stanga e null sau nedefinit., Acest lucru contrastează cu operatorul ||, care ar returna” string ” pentru toate exemplele.

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

    înlănțuirea opțională vă permite să accesați nodurile imbricate într-un obiect fără a avea a și verificați la fiecare nivel.

    un exemplu este const zipcode = persoană ? .adresa?.Cod poștal. Dacă oricare dintre proprietăți nu sunt prezente, cod poștal va fi nedefinit.

    ES.NextEdit

    ES.,Următorul este un nume dinamic care se referă la oricare ar fi următoarea versiune este la momentul scrierii. ES.Următoarele caracteristici sunt propuneri finalizate (aka „etapa 4 propuneri”) enumerate la propunerea terminat care nu fac parte dintr-o specificație ratificată. Comitetul Lingvistic urmează un model „spec viu”, astfel încât aceste schimbări fac parte din standard, iar ratificarea este o formalitate.