ECMAScript (Suomi)
ECMAScript selityksessä on standardoitu erittely skriptikieli kehitti Brendan Eich Netscape; alun perin nimeltään Mocha, sitten LiveScript, ja lopulta JavaScript. Joulukuussa 1995, Sun Microsystems ja Netscape ilmoitti JavaScript lehdistötiedotteessa. Marraskuussa 1996 Netscape ilmoitti kokouksessa Ecma International standards organization etukäteen standardointi JavaScript. Ecma: n yleiskokous hyväksyi ECMA-262: n ensimmäisen painoksen kesäkuussa 1997. Kielistandardista on sittemmin julkaistu useita painoksia., Nimi ”ECMAScript” oli kompromissi organisaatioita standardoinnista kielen, erityisesti Netscape ja Microsoft, joiden riita hallitsi alussa standardeja istuntoja. Eich kommentoi, että ” ECMAScript oli aina ei-toivottu kauppanimi, joka kuulostaa ihosairaudelta.”ECMAScript on virallistettu toiminnallisen semantiikan kautta Stanfordin yliopistossa ja tietojenkäsittelyn laitoksella, Imperial College Londonissa turvallisuusanalyysia ja standardointia varten.,
sekä JavaScript että JScript ovat ECMAScript-eritelmän mukaisia ja tarjoavat samalla lisäominaisuuksia, joita ei ole kuvattu eritelmässä.
VersionsEdit
On olemassa yksitoista painoksia ECMA-262 julkaistu. Standardin version 11 työstö valmistui kesäkuussa 2020.,
Edition | julkaisupäivämäärä | Nimi | Muutokset ennen edition | Toimittaja | |||
---|---|---|---|---|---|---|---|
1 | päivänä kesäkuuta 1997 | Ensimmäinen painos | Kaveri L. Steele Jr.,998 | Toimituksellisia muutoksia pitää erittely täysin linjassa ISO/IEC 16262 kansainvälinen standardi | Mike Cowlishaw | ||
3 | joulukuuta 1999 | Lisätty säännöllisiä lausekkeita, parempi merkkijonon käsittely, uusi ohjaus lausuntoja, try/catch poikkeus käsittely, tiukempi määritelmä virheitä, muotoilun numeerinen lähtö, ja muita parannuksia | Mike Cowlishaw | ||||
4 | Hylätty (viimeinen esitys on 30. kesäkuuta 2003) | Neljäs Painos oli hylätty, koska poliittiset erimielisyydet, jotka koskevat kielen monimutkaisuus., Monet neljänteen painokseen ehdotetut ominaisuudet on hylätty kokonaan; osa niistä on sisällytetty kuudenteen painokseen. | |||||
5 | joulukuu 2009 | Lisää ”tiukka tilassa,” osajoukko tarkoituksena on tarjota enemmän perusteellinen virhe tarkkailun ja välttää virhealtista konstruktioita. Selvennetään monia epäselvyyksiä 3rd edition specification, ja mahtuu käyttäytymistä reaalimaailman toteutuksia, jotka erosivat toisistaan johdonmukaisesti, että erittely., Lisää joitakin uusia ominaisuuksia, kuten getters ja setters, kirjaston tuki JSON, ja täydellisempää pohdintaa objektin ominaisuuksia. | Pratap Lakshman, Allen Wirfs-Brock | ||||
5.1 | kesäkuu 2011 | Tämä versio 5.1 ECMAScript-standardi on täysin linjassa sen kanssa, kolmas painos kansainvälisen standardin ISO/IEC 16262:2011., | Katso 9th Edition – ECMAScript 2018 | Brian Terlson | |||
10 | päivänä kesäkuuta 2019 | ECMAScript 2019 (ES2019) | Katso 10th Edition – ECMAScript 2019 | Brian Terlson, Bradley Farias, Jordan Harband | |||
11 | päivänä kesäkuuta 2020 | ECMAScript 2020 (ES2020) | Katso 11th Edition – ECMAScript 2020 mennessä | Jordan Harband, Kevin Smith |
kesäkuussa 2004, Ecma International julkaisi ECMA-357 standardi, jossa määritellään laajennus ECMAScript, joka tunnetaan nimellä ECMAScript for XML (E4X)., Ecma määritteli myös ”Kompakti Profiili” ECMAScript – nimellä ES-CP, tai ECMA-327 – se oli suunniteltu resurssi-rajoitettu laitteisiin, joka peruutettiin vuonna 2015.
4. Painos (hylätty)Muokkaa
ehdotettu neljäs painos ECMA-262 (ECMAScript 4 tai ES4) olisi ollut ensimmäinen merkittävä päivitys ECMAScript koska kolmas painos julkaistiin vuonna 1999. Eritelmän (yhdessä viitetoteutuksen kanssa) oli alun perin tarkoitus valmistua lokakuuhun 2008 mennessä. Ensimmäinen luonnos on päivätty helmikuussa 1999., Työryhmä julkaisi yleiskatsauksen kielestä 23. lokakuuta 2007.
elokuuhun 2008 mennessä ECMAScript 4th edition-ehdotus oli skaalattu takaisin projektikoodinimeksi ECMAScript Harmony. Ominaisuudet keskusteltu Harmonia tällä kertaa mukana:
- luokat
- moduuli järjestelmä,
- valinnainen tyyppi merkintöjä ja staattinen tyypitys, luultavasti käyttämällä rakenne-tyyppinen järjestelmä,
- generaattorit ja iteraattorit,
- tuhoa tehtävän, ja
- algebralliset tietotyypit.,
tarkoitus nämä ominaisuudet oli osittain tukemaan paremmin ohjelmointi suuri, ja jotta uhraa joitakin script kykyyn olla dynaaminen suorituskyvyn parantamiseksi. Esimerkiksi, Tamarin – virtual machine for ActionScript, kehitetty ja avoimen lähdekoodin Adobe – on just-in-time kokoelma (JIT) tuki tietyille skriptejä.
uusien ominaisuuksien esittelyn lisäksi joitakin ES3-vikoja ehdotettiin korjattavaksi versiossa 4. Nämä korjaukset ja muut, ja tuki JSON koodaus/dekoodaus, on taitettu osaksi ECMAScript, 5. Painos, erittely.,
Työ alkoi Painos 4 jälkeen ES-CP (Kompakti Profiili) erittely oli valmistunut, ja se jatkui noin 18 kuukautta, jos hidas edistyminen oli tehty tasapainotus teorian Netscapen JavaScript-2 erittely täytäntöönpanoon kokemus Microsoftin JScript .NET. Jonkin ajan kuluttua, painopiste siirtyi ECMAScript for XML (E4X) – standardia. Päivityksestä ei ole kiistelty. Vuoden 2007 lopulla keskustelua Eich, myöhemmin Mozilla-Säätiön CTO, ja Chris Wilson, Microsoftin alustan arkkitehti Internet Explorer, tuli julkisuuteen useita blogeja., Wilson varoitti, että koska ehdotetut muutokset ECMAScript teki sitä taaksepäin yhteensopimattomia joiltain osin aiemmissa versioissa kieli, päivitys oli ”breaking the Web”, ja että sidosryhmät, jotka vastustivat muutoksia olivat ”piilossa”. Eich vastasi toteamalla, että Wilson näytti olevan ”toistamalla valheita blogeja” ja kiistää, että siellä oli yrittää tukahduttaa toisinajattelijoita ja haastoi kriitikot antaa konkreettisia esimerkkejä yhteensopimattomuus., Hän huomautti, että Microsoft Silverlight-ja Adobe AIR luottaa C# ja ActionScript 3: lla, jotka molemmat ovat suurempia ja monimutkaisempia kuin ECMAScript Painos 3.
5. EditionEdit
Yahoo, Microsoft, Google, ja muut 4. painos toisinajattelijat muodostivat oman alakomitean suunnitella vähemmän kunnianhimoinen päivitys ECMAScript 3, alustavasti nimeltään ECMAScript 3.1. Tässä painoksessa keskityttäisiin tietoturva-ja kirjastopäivityksiin painottaen suuresti yhteensopivuutta. Edellä mainitun julkisen sparrauksen jälkeen ECMAScript 3.,1 ja ECMAScript 4 joukkueet pääsivät kompromissiin: molemmat versiot olisi työskennellyt samanaikaisesti yhteistyössä joukkueet varmistaa, että ECMAScript 3.1 edelleen tiukkoja osajoukko ECMAScript 4 sekä semantiikan ja syntaksin.
Kuitenkin, erilaiset filosofiat jokainen joukkue johti toistuvasta rikkoutumisesta osajoukko sääntö, ja se pysyi epävarmaa, että ECMAScript 4 toisinajattelijat olisi koskaan tukea tai toteuttaa ECMAScript 4 tulevaisuudessa., Kun yli vuosi siitä, kun erimielisyys tulevaisuuden ECMAScript sisällä Ecma-Tekninen Komitea 39, kaksi joukkuetta on saavuttanut uuden kompromissin. heinäkuuta 2008: Brendan Eich ilmoitti, että Ecma TC39 olisi keskittyä työn ECMAScript 3.1 (myöhemmin nimeltään ECMAScript, 5th Edition) – hankkeen kanssa yhteistyötä kaikki osapuolet, ja myyjät olisi tavoite vähintään kaksi yhteentoimivia toteutuksia 2009 alussa. Huhtikuussa 2009 Ecma TC39 julkaisi 5.painoksen ”final”-luonnoksen ja ilmoitti, että yhteentoimivien toteutusten testauksen odotetaan valmistuvan heinäkuun puoliväliin mennessä., Joulukuuta 2009 ECMA-262 5.
6. Painos – ECMAScript 2015Edit
6. painos, alun perin nimellä ECMAScript 6 (ES6) ja sitten myöhemmin nimeltään ECMAScript 2015, saatiin valmiiksi kesäkuussa 2015. Tämä päivitys tuo merkittäviä uusia syntaksi kirjoittaa monimutkaisia sovelluksia, kuten luokan julkilausumat (class Foo { ... }
), ES6 moduuleja, kuten import * as moduleName from "..."; export const Foo
, mutta määrittelee ne semanttisesti samoin ehdoin kuin ECMAScript 5 tiukkaa tilassa., Muita uusia ominaisuuksia ovat iteraattorit ja for...of
silmukoita, Python-tyyliin generaattorit, nuoli funktion lauseke (() => {...}
), let
avainsana paikallisten ilmoitusten const
avainsana jatkuvaa paikalliset ilmoitukset, binary data, kirjoitetaan taulukot, uusia kokoelmia (karttoja, asetetaan, ja WeakMap), lupauksia, numero ja matematiikka parannuksia, heijastus, valtakirjat (metaprogramming virtuaalisia esineitä ja kääreet) ja malli literaaleja jousille. Koko lista on laaja., Ensimmäisenä” ECMAScript Harmony ”- spesifikaationa se tunnetaan myös nimellä ” ES6 Harmony.”
7th Edition – ECMAScript 2016edit
7th edition, viralliselta nimeltään ECMAScript 2016, valmistui kesäkuussa 2016. Sen ominaisuuksia ovat lohko-rajausta muuttujat ja toiminnot, tuhoa kuvioita (muuttujia), oikea hännän puhelut, potenssi-operaattori **
numeroita, await
, async
avainsanat asynkroninen ohjelmointi, ja Array.prototyyppi.sisältää
– funktion.,
potenssiinkorotus operaattori vastaa Math.pow
, mutta tarjoaa yksinkertaisemman syntaksin, joka muistuttaa kieliä, kuten Python, F#, Perl ja Ruby.async
/odottavat
ylistettiin helpompi tapa käyttää lupaa ja kehittää asynkroninen koodi.
8th Edition – ECMAScript 2017edit
8th edition, viralliselta nimeltään ECMAScript 2017, valmistui kesäkuussa 2017. Sen ominaisuuksiin kuuluu objekti.arvot
, Objekti.,merkinnät
ja Objekti.getOwnPropertyDescriptors
toiminnot helppo manipulointi Esineitä, async/await
rakennelmat, jotka käyttävät generaattorit ja lupauksia, ja muita ominaisuuksia samanaikaisuuden ja atomics.
9th Edition – ECMAScript 2018edit
9th edition, viralliselta nimeltään ECMAScript 2018, valmistui kesäkuussa 2018. Uusia ominaisuuksia ovat muun/levitä toimijoiden esine literaaleja (kolme pistettä: ...identifier
), asynkroninen iteraation Promise.prototype.finally
ja lisäyksiä RegExp.,
levitysoperaattori mahdollistaa kohteen ominaisuuksien helpon kopioinnin, kuten alla on esitetty.
10. Painos – ECMAScript 2019Edit
10. painos, virallisesti tunnetaan nimellä ECMAScript 2019, julkaistiin kesäkuussa 2019. Lisätty ominaisuuksia ovat, mutta eivät rajoitu, Array.prototype.flat
, Array.prototype.flatMap
muutokset Array.sort
ja Object.fromEntries
.
Array.lajittele
on nyt taatusti vakaa, mikä tarkoittaa, että elementit samalla lajittelu edelle näkyvät samassa järjestyksessä lajitellut array., Array.prototype.flat(depth=1)
litistää array tiettyyn syvyyteen, mikä tarkoittaa, että kaikki subarray elementtejä (enintään määritelty syvyys) ovat ketjutettuja rekursiivisesti.
11. Painos, ECMAScript 2020Edit
11. painos, virallisesti tunnetaan nimellä ECMAScript 2020, julkaistiin kesäkuussa 2020. Lisäksi uusia toimintoja, tämä versio sisältää BigInt
alkukantaiset mielivaltaisen kokoinen kokonaislukua, nullish sommittelee operaattori, ja globalThis kohde.,
BigInts luodaan joko BigInt
rakentaja tai syntaksia 10n
, missä ”n” on sijoitettu jälkeen numeroliteraali. Bigintit mahdollistavat kokonaislukujen edustamisen ja manipuloinnin yli numeron.MAX_SAFE_INTEGGER
, kun taas numeroita edustaa kaksoistarkkuus 64-bittinen IEEE 754-arvo., Sisäänrakennettu toimintoja Matematiikka
ei ole yhteensopiva BigInts; esimerkiksi, potenssi sekä BigInts on tehtävä **
– operaattorin sijaan Math.pow
.
nullish sommittelee operaattori ??
, palaa sen oikealle puolelle operandi, kun sen vasemmalla puolella on null
tai undefined
., Tämä on ristiriidassa ||
– operaattori, joka palaa ”string” kaikki esimerkkejä.
false ?? "string" // -> falseNaN ?? "string" // -> NaNundefined ?? "string" // -> "string"
Valinnainen ketjutus mahdollistaa pääsyn sisäkkäisiä solmut esine ilman JA tarkista kullakin tasolla.
esimerkiksi const postinumero = henkilö?.osoite?.zipcode
. Jos kaikki ominaisuudet eivät ole läsnä, postinumero
on undefined
.
ES.NextEdit
ES.,Seuraava on dynaaminen nimi, joka viittaa mitä seuraava versio on kirjoitettaessa. ES.Seuraavat ominaisuudet ovat valmiit ehdotukset (eli ”vaiheen 4 ehdotukset”) sellaisina kuin ne on lueteltu valmiissa ehdotuksessa, jotka eivät kuulu ratifioituun eritelmään. Kieli komitea seuraa ”elävä spec” malli, niin nämä muutokset ovat osa standardia, ja ratifiointi on muodollisuus.