Mitä eroa on JavaScriptillä ja ECMAScriptillä?

Olen kokeillut googlella "ero JavaScriptin ja ECMAScriptin välillä".

Minun täytyi kahlata epämääräisten ja näennäisesti ristiriitaisten merien läpi:

"ECMAScript on standardi."

"JavaScript on vakio."

"ECMAScript on eritelmä."

"JavaScript on ECMAScript-standardin toteutus."

"ECMAScript on standardoitu JavaScript."

"ECMAScript on kieli."

"JavaScript on ECMAScriptin murre."

"ECMAScript on JavaScript."

Pidätin halua itkeä, tartuin ja päätin sitoutua tuskalliseen mutta tuottavaan tutkimukseen.

Tämä artikkeli edustaa nykyistä ymmärrystäni JavaScriptin ja ECMAScriptin eroista. Se on suunnattu ihmisille, jotka tuntevat JavaScriptin, mutta haluavat selkeämmän käsityksen sen suhteesta ECMAScriptiin, verkkoselaimiin, Babeliin ja muuhun. Opit myös komentosarjakielistä, JavaScript-moottoreista ja JavaScript-ajoajoista.

Joten pumpataan.

JavaScript / ECMAScript-sanasto

Alla on luettelo määritelmistä, jotka on suunniteltu keskittymään johdonmukaisuuteen ja selkeyteen. Määritelmät eivät ole 100% täydellisiä. Ne on rakennettu tavalla, joka antaa korkean tason käsityksen JavaScriptin ja ECMAScriptin yhteydestä ja suhteesta.

Aloitetaan ilman lisätoimenpiteitä.

Ecma International

Organisaatio, joka luo standardit tekniikoille.

Kuvittele esimerkki "vakiosta" (vaikkakaan Ecman luomaa), ajattele kaikkia näppäimistöjä, joita olet koskaan käyttänyt. Oliko suurimmalla osalla kirjaimia samassa järjestyksessä ja välilyönti, Enter-näppäin, nuolinäppäimet, joiden numerot näkyvät rivissä ylhäällä? Tämä johtuu siitä, että useimmat näppäimistövalmistajat perustavat näppäimistösuunnittelunsa QWERTY-asettelustandardiin.

ECMA-262

Tämä on Ecma Internationalin julkaisema standardi. Se sisältää spesifikaation yleiskäyttöiselle komentosarjakielelle.

ECMA-262 on standardi, kuten QWERTY, mutta sen sijaan, että se edustaa näppäimistöasettelun määritystä, se edustaa komentosarjakielimääritystä nimeltä ECMAScript.

Ajattele ECMA-262: ta ECMAScriptin viitenumerona.

Komentosarjakieli

Ohjelmointikieli, joka on suunniteltu erityisesti toimimaan olemassa olevan yksikön tai järjestelmän kanssa

Saadaksesi yleiskuvan siitä, mikä tekee ohjelmointikielestä komentosarjakielen, harkitse komentoja "kävellä", "ajaa" ja "hypätä". Nämä toimet edellyttävät jotain niiden toteuttamiseksi, ehkä henkilöä, koiraa tai videopelihahmoa. Ilman näyttelijää suorittamaan näitä komentoja "kävellä", "juosta" ja "hypätä" ei olisi järkevää. Tämä toimintojoukko on analoginen komentosarjakielen kanssa, joka keskittyy ulkoisen kokonaisuuden manipulointiin.

ECMAScript

ECMA-262: ssa määritelty määrittely yleiskäyttöisen komentosarjakielen luomiseksi.

Synonyymi: ECMAScript-määritys

Vaikka ECMA-262 on standardin nimi, se edustaa komentosarjakielimääritystä ECMAScript.

ECMAScript tarjoaa säännöt, yksityiskohdat ja ohjeet, joita komentosarjakielen on noudatettava, jotta sitä voidaan pitää ECMAScript-yhteensopivana.

JavaScript

ECMAScript-määrityksen mukainen yleiskäyttöinen komentosarjakieli.

JavaScript on kahvimakuinen kieli, jolla rakastan ohjelmoida. ECMAScript on määrittely, johon se perustuu. Lukemalla ECMAScript-määrittely opit luomaankomentosarjakieli. Lukemalla JavaScript-ohjeet opit käyttämään komentosarjakieliä.

Kun ihmiset kutsuvat JavaScriptiä "ECMAScript-kielen murteeksi", he tarkoittavat sitä samassa merkityksessä kuin puhuessaan englannin, ranskan tai kiinan murteista. Murros saa suurimman osan sanastostaan ​​ja syntaksistaan ​​äidinkielestään, mutta poikkeaa tarpeeksi eron ansaitsemiseksi.

JavaScripti toteuttaa enimmäkseen ECMAScript-määrityksen, kuten ECMA-262: ssa on kuvattu, mutta eroja on olemassa kourallinen. Mozilla hahmottaa JavaScriptin muut kuin ECMAScript-kieliominaisuudet tässä:

JavaScript-moottori

Ohjelma tai tulkki, joka ymmärtää ja suorittaa JavaScript-koodin.

Synonyymit : JavaScript-tulkki, JavaScript-toteutus

JavaScript-moottorit löytyvät yleisesti selaimista, mukaan lukien Chromen V8, Firefox SpiderMonkey ja Edge Chakra. Jokainen moottori on kuin kielimoduuli sovellukselleen, jonka avulla se voi tukea tiettyä JavaScript-kielen osajoukkoa.

JavaScript-moottori selaimelle on kuin kielen ymmärtäminen ihmiselle.Jos käymme uudelleen esimerkissä toiminnoista "kävele", "juokse", "hyppää", JavaScript-moottori on osa "kokonaisuutta", joka todella ymmärtää näiden toimintojen merkityksen.

Tämä analogia auttaa selittämään muutamia asioita selaimista:

Erot selaimen suorituskyvyssä

Kaksi ihmistä saattaa tunnistaa komennon "hypätä", mutta yksi voi reagoida komentoon nopeammin, koska henkilö ymmärtää ja käsittelee komennon nopeammin kuin toinen henkilö. Vastaavasti kaksi selainta voi ymmärtää JavaScript-koodin, mutta yksi käyttää sitä nopeammin, koska sen JavaScript-moottori on toteutettu tehokkaammin.

Erot selaintukessa

Harkitse samaa kieltä puhuvien ihmisten välisiä eroja. Vaikka monet ihmiset puhuisivat englantia, jotkut saattavat tietää joitain sanoja, ilmaisuja ja syntaksisääntöjä, joita toiset eivät, ja päinvastoin. Selaimet ovat samalla tavalla. Vaikka kaikki selainten JavaScript-moottorit ymmärtävät JavaScriptiä, jotkut selaimet ymmärtävät kieltä paremmin kuin toiset. Selainten kielen tukemisessa on eroja.

Mitä tulee selaintukeen, ihmiset puhuvat yleensä "ECMAScript-yhteensopivuudesta" eikä "JavaScript-yhteensopivuudesta", vaikka JavaScript-moottorit jäsentävät ja suorittavat… hyvin, JavaScript. Tämä voi olla hieman hämmentävää, mutta siihen on selitys.

Jos muistat, ECMAScript on erittely siitä, miltä komentosarjakieli voisi näyttää. Uuden ECMAScript-version julkaiseminen ei tarkoita, että kaikilla olemassa olevilla JavaScript-moottoreilla olisi yhtäkkiä nämä uudet ominaisuudet. JavaScript-moottoreista vastaavien ryhmien tai organisaatioiden on oltava ajan tasalla uusimmista ECMAScript-spesifikaatioista ja hyväksyttävä sen muutokset.

Siksi kehittäjät esittävät yleensä kysymyksiä: "Mitä ECMAScript-versiota tämä selain tukee?" tai "Mitä ECMAScript-ominaisuuksia tämä selain tukee?" He haluavat tietää, ovatko Google, Mozilla ja Microsoft päivittäneet selaintensa JavaScript-moottorit - esimerkiksi V8, SpiderMonkey ja Chakra - uusimmissa ECMAScriptissä kuvattuihin ominaisuuksiin.

ECMAScript-yhteensopivuustaulukko on hyvä lähde vastaamaan näihin kysymyksiin.

Jos uusi ECMAScript-versio ilmestyy, JavaScript-moottorit eivät integroi koko päivitystä kerralla. Ne sisältävät uudet ECMAScript-ominaisuudet asteittain, kuten tämä ote Firefoxin JavaScript-muutoslokista näkyy:

JavaScript-ajonaikainen

Ympäristö, jossa JavaScript-koodi toimii, ja JavaScript-moottori tulkitsee sen. Ajonaika tarjoaa isäntäobjektit, joilla JavaScript voi toimia ja joita voi käyttää.

Synonyymit : Isäntäympäristö

JavaScript-ajonaika on "olemassa oleva yksikkö tai järjestelmä", joka mainitaan komentosarjakielen määritelmässä. Koodi kulkee JavaScript-moottorin läpi, ja sen jäsennettyä ja ymmärrettyä yksikkö tai järjestelmä suorittaa tulkitut toiminnot. Koirakävelee, henkilöjuoksu, videopelihahmo hyppää (tai yllä olevan kuvan tapauksessa hylkyjä).

Sovellukset asettavat itsensä JavaScript-komentosarjojen saataville tarjoamalla "isäntäobjekteja" ajon aikana. Asiakkaan puolella JavaScript-ajonaika olisi verkkoselain, jossa isäntäobjektit, kuten Windows ja HTML-asiakirjat, ovat käytettävissä manipuloinnissa.

Oletko koskaan työskennellyt ikkunan tai asiakirjan isäntäobjektien kanssa? Ikkuna- ja asiakirjaobjektit eivät itse asiassa ole osa JavaScriptiä. Ne ovat Web-sovellusliittymiä, selaimen tarjoamia objekteja, jotka toimivat JavaScriptin isäntäympäristönä. Palvelinpuolen JavaScript-ajonaika on Node.js. Palvelimeen liittyvät isäntäobjektit, kuten tiedostojärjestelmä, prosessit ja pyynnöt, tarjotaan Node.js-tiedostossa.

Mielenkiintoinen asia: erilaiset JavaScript-ajonajat voivat jakaa saman JavaScript-moottorin. Esimerkiksi V8 on JavaScript-moottori, jota käytetään sekä Google Chromessa että Node.js: ssä - kahdessa hyvin erilaisessa ympäristössä.

ECMAScript 6

Se on ECMA-262-standardin kuudes painos, ja se sisältää suuria muutoksia ja parannuksia ECMAScript-määritykseen.

Synonyymit : ES6, ES2015 ja ECMAScript 2015

Tämä ECMAScript-painos muutti nimensä ES6: sta ES2015: ksi, koska vuonna 2015 Ecma International päätti siirtyä vuosittaisiin ECMAScript-julkaisuihin. Tämän mukaisesti Ecma International alkoi myös nimetä uusia julkaisuja ECMAScript-spesifikaatioista julkaisuvuoden perusteella. Lyhyesti sanottuna ES6 ja ES2015 ovat kaksi eri nimeä samalle asialle.

Babel

Transpileri, joka voi muuntaa ES6-koodin ES5-koodiksi.

Kehittäjät voivat käyttää ES6: n mukana tulevia kiiltäviä uusia ominaisuuksia, mutta voivat olla huolissaan selainten yhteensopivuudesta verkkosovelluksissaan. Tämän artikkelin kirjoittamisen aikaan Edge ja Internet Explorer eivät tue täysin ES6-määrityksen ominaisuuksia.

Huolestuneet kehittäjät voivat Babelin avulla muuntaa ES6-koodin toiminnallisesti vastaavaksi versioksi, joka käyttää vain ES5-ominaisuuksia. Kaikki suuret selaimet tukevat täysin ES5: tä, joten ne voivat suorittaa koodin ongelmitta.

Yksi mielenkiintoinen tidbit

Toivon, että pidit nämä tiedot JavaScriptistä ja ECMAScriptistä hyödyllisiä. Ennen kuin kerromme asioita täällä, haluaisin jakaa vielä yhden tiedon, joka on selvitettävä kaltaisilleni aloitteleville web-kehittäjille.

Kana tai muna

Hämmentävä historia on, että JavaScript luotiin vuonna 1996. Se toimitettiin sitten Ecma Internationalille vuonna 1997 standardoimiseksi, mikä johti ECMAScriptiin. Samaan aikaan, koska JavaScript on ECMAScript-määrityksen mukainen, JavaScript on esimerkki ECMAScript-toteutuksesta.

Tästä jää meille tämä hauska tosiasia: ECMAScript perustuu JavaScriptiin ja JavaScript perustuu ECMAScriptiin.

Tiedän.

Se kuulostaa täsmälleen kuin aikamatka-tropiikki ihmisistä, jotka ovat omia vanhempiaan - hieman röyhkeitä, mutta hauskaa ajatella.

Kaikki hyvät asiat

Tiedän, että meillä kaikilla on ollut hauskaa täällä, mutta se oli paljon tietoa sulattamista varten. Käytän tätä tilaisuutta jättää hyvästit.

Voit vapaasti jättää kysymyksiä, kommentteja, ehdotuksia tai huolenaiheita alla.

Paljon kiitoksia lukemisesta!