Mis vahe on JavaScripti ja ECMAScripti vahel?

Olen proovinud guugeldada teksti „vahe JavaScripti ja ECMAScripti vahel”.

Lõpuks pidin kahlama läbi mitmetähenduslike ja näiliselt vastuoluliste tulemuste mere:

"ECMAScript on standard."

„JavaScript on standard.”

"ECMAScript on spetsifikatsioon."

„JavaScript on ECMAScript standardi rakendus.”

"ECMAScript on standardiseeritud JavaScript."

"ECMAScript on keel."

"JavaScript on ECMAScript'i dialekt."

„ECMAScript on JavaScript.”

Pidades tagasi nututungi, võtsin end kokku ja otsustasin pühenduda valusatele, kuid samas produktiivsetele uuringutele.

See artikkel esindab minu praegust arusaama JavaScripti ja ECMAScript'i erinevustest. See on suunatud inimestele, kes tunnevad JavaScripti, kuid sooviksid selgemini mõista selle suhet ECMAScriptiga, veebibrauseritega, Babeliga ja muuga. Samuti saate hea ülevaate saamiseks skriptikeeltest, JavaScripti mootoritest ja JavaScripti käitusaegadest.

Nii et pumbake.

JavaScripti / ECMAScript sõnastik

Allpool on toodud definitsioonide loetelu, mille eesmärk on keskenduda järjepidevusele ja selgusele. Mõisted pole 100% täielikud. Need on üles ehitatud viisil, mis võimaldab kõrgel tasemel mõista JavaScripti ja ECMAScript'i seost ja suhet.

Alustame pikemalt mõtlemata.

Ecma International

Organisatsioon, mis loob tehnoloogiate standardid.

"Standardi" näite illustreerimiseks (ehkki mitte Ecma loodud) mõelge kõigile klaviatuuridele, mida olete kunagi kasutanud. Kas valdaval enamikul oli tähed samas järjekorras ja tühikuklahv, sisestusklahv, nooleklahvid, ülaosas järjestikku kuvatud numbritega? Seda seetõttu, et enamik klaviatuuritootjaid lähtub klaviatuurikujunduses QWERTY paigutusstandardist.

ECMA-262

See on Ecma Internationali välja antud standard. See sisaldab üldotstarbelise skriptikeele spetsifikatsiooni.

ECMA-262 on standard nagu QWERTY, kuid klaviatuuripaigutuse spetsifikatsiooni asemel esindab see skriptikeele spetsifikatsiooni, mida nimetatakse ECMAScriptiks.

Mõelge ECMA-262-le kui ECMAScripti viitenumbrile.

Skriptikeel

Programmeerimiskeel, mis on loodud spetsiaalselt olemasoleva üksuse või süsteemi toimimiseks

Üldise idee saamiseks selle kohta, mis muudab programmeerimiskeele skriptikeeleks, võtke arvesse käske „walk“, „run“ ja „jump“. Need toimingud nõuavad nende teostamiseks midagi, võib-olla inimest, koera või videomängu tegelast. Ilma et näitleja neid käske täidaks, poleks "kõndimine", "joosta" ja "hüpata" mõtet. See toimingute kogum on analoogne skriptikeelega, mis keskendub välise üksuse manipuleerimisele.

ECMAScript

ECMA-262 määratletud spetsifikatsioon üldotstarbelise skriptikeele loomiseks.

Sünonüüm: ECMAScript spetsifikatsioon

Kuigi ECMA-262 on standardi nimi, tähistab see skriptikeele spetsifikatsiooni ECMAScript.

ECMAScript pakub reegleid, üksikasju ja juhiseid, mida skriptikeel peab järgima, et seda saaks pidada ECMAScriptiga ühilduvaks.

JavaScripti

Üldotstarbeline skriptikeel, mis vastab ECMAScript spetsifikatsioonile.

JavaScript on kohvimaitseline keel, millega mulle meeldib programmeerida. ECMAScript on spetsifikatsioon, millel see põhineb. ECMAScript spetsifikatsiooni lugedes saate teada, kuidas luuaskriptikeel. JavaScripti dokumentatsiooni lugedes saate teada, kuidas skriptikeelt kasutada .

Kui inimesed nimetavad JavaScripti „ECMASkripti keele dialektiks“, tähendavad nad seda samas tähenduses nagu inglise, prantsuse või hiina murretest rääkides. Murdekeel tuleneb enamikust oma leksikonist ja süntaksist emakeelest, kuid hälbib piisavalt, et vääriks vahet.

JavaScripti rakendab enamasti ECMAScript spetsifikatsiooni, nagu on kirjeldatud ECMA-262-s, kuid siiski on olemas üksikuid erinevusi. Mozilla esitab siin JavaScripti mitte-ECMAScript keele funktsioonid:

JavaScripti mootor

Programm või tõlk, mis mõistab ja täidab JavaScripti koodi.

Sünonüümid : JavaScripti tõlk, JavaScripti rakendamine

JavaScripti mootoreid leidub tavaliselt veebibrauserites, sealhulgas Chrome'is V8, Firefoxis SpiderMonkey ja Edge'is Chakra. Iga mootor on oma rakenduse jaoks nagu keelemoodul, mis võimaldab tal toetada JavaScripti keele teatud alamhulka.

Brauseri JavaScripti mootor on inimesele nagu keele mõistmine.Kui vaatame uuesti toimingute „kõndida”, „joosta”, „hüpata” näidet, on JavaScripti mootor “üksuse” osa, mis tegelikult saab aru, mida need toimingud tähendavad.

See analoogia aitab selgitada mõnda brauserite kohta:

Brauseri jõudluse erinevused

Kaks inimest võivad ära tunda käsu „hüpata“, kuid üks võib reageerida käsklusele kiiremini, kuna inimene saab käsku mõista ja töödelda kiiremini kui teine. Sarnaselt saavad kaks brauserit JavaScripti koodist aru, kuid üks käitab seda kiiremini, kuna selle JavaScripti mootorit rakendatakse tõhusamalt.

Brauseri toe erinevused

Mõelge erinevustele, mis eksisteerivad sama keelt rääkivate inimeste vahel. Isegi kui paljud inimesed räägivad inglise keelt, võivad mõned teada mõnda sõna, väljendit ja süntaksireeglit, mida teised ei oska, ja vastupidi. Brauserid on samamoodi. Kuigi kõik brauserite JavaScripti mootorid mõistavad JavaScripti, mõistavad mõned brauserid keelt paremini kui teised. Brauserite keelt toetavas viisis on erinevusi.

Mis puudutab brauserituge, siis inimesed räägivad tavaliselt pigem „ECMAScripti ühilduvusest“, mitte „JavaScripti ühilduvusest“, kuigi JavaScripti mootorid sõeluvad ja käivitavad ... noh, JavaScripti. See võib veidi segadusse ajada, kuid seletus on olemas.

Kui meenutate, on ECMAScript spetsifikatsioon sellele, milline skriptikeel võiks välja näha. ECMAScript uue väljaande väljaandmine ei tähenda, et kõigil olemasolevatel JavaScripti mootoritel oleksid äkki need uued funktsioonid. JavaScripti mootorite eest vastutavad rühmad või organisatsioonid peavad olema kursis uusimate ECMAScript spetsifikatsioonidega ja võtma selle muudatused vastu.

Seetõttu kipuvad arendajad küsima selliseid küsimusi: "Millist ECMAScript'i versiooni see brauser toetab?" või "Milliseid ECMAScripti funktsioone see brauser toetab?" Nad tahavad teada, kas Google, Mozilla ja Microsoft on jõudnud oma brauserite JavaScripti mootorite - näiteks V8, SpiderMonkey ja Chakra - värskendamisse uusimas ECMAScriptis kirjeldatud funktsioonidega.

ECMAScript ühilduvustabel on hea ressurss neile küsimustele vastamiseks.

Kui välja tuleb uus ECMAScript väljaanne, ei integreeri JavaScripti mootorid kogu värskendust ühe korraga. Need sisaldavad uusi ECMAScript-i funktsioone järk-järgult, nagu on näha selles Firefoxi JavaScripti muudatuste loendi väljaandes:

JavaScripti käitusaeg

Keskkond, kus JavaScripti kood töötab, ja seda tõlgendab JavaScripti mootor. Käitusaeg pakub hostiobjekte, millel JavaScript saab töötada ja nendega töötada.

Sünonüümid : hostkeskkond

JavaScripti käitusaeg on skriptikeele määratluses mainitud „olemasolev üksus või süsteem”. Kood läbib JavaScripti mootori ja kui parsitud ja mõistetud, täidab üksus või süsteem tõlgendatud toiminguid. Koerkõnnib, inimenejookseb, hüppab videomängu tegelane (või ülaltoodud pildi korral vrakk).

Rakendused muudavad JavaScripti skriptimiseks kättesaadavaks, pakkudes käitusajal „hostobjekte“. Kliendi poolel oleks JavaScripti käitamise aeg veebibrauser, kus hostobjektid, näiteks aknad ja HTML-dokumendid, on manipuleerimiseks kättesaadavad.

Kas olete kunagi akna- või dokumendihostobjektidega töötanud? Akna- ja dokumendiobjektid ei kuulu tegelikult JavaScripti põhikeele hulka. Need on veebi API-d, brauseri pakutavad objektid, mis toimivad JavaScripti hostikeskkonnana. Serveri poolel on JavaScripti käitusaeg Node.js. Serveriga seotud hostobjektid, näiteks failisüsteem, protsessid ja taotlused, on toodud Node.js-is.

Huvitav punkt: erinevad JavaScripti käitused võivad jagada sama JavaScripti mootorit. Näiteks V8 on JavaScripti mootor, mida kasutatakse nii Google Chrome'is kui ka Node.js - kahes väga erinevas keskkonnas.

ECMAScript 6

See on ECMA-262 standardi kuues väljaanne ja sisaldab olulisi muudatusi ja täiustusi ECMAScript spetsifikatsioonis.

Sünonüümid : ES6, ES2015 ja ECMAScript 2015

See ECMAScript väljaanne muutis oma nime ES6-st ES2015-ks, kuna 2015. aastal otsustas Ecma International minna üle iga-aastastele ECMAScript väljaannetele. Vastavalt sellele hakkas Ecma International nimetama ka ECMAScript spetsifikatsiooni uusi väljaandeid nende väljaandmise aasta põhjal. Lühidalt öeldes on ES6 ja ES2015 sama asja kaks erinevat nime.

Paabel

Transpiler, mis suudab teisendada ES6 koodi ES5 koodiks.

Arendajad saavad kasutada ES6-ga kaasas olevaid uusi läikivaid funktsioone, kuid võivad olla seotud oma veebirakenduste brauserite ühilduvusega. Selle artikli kirjutamise ajal ei toeta Edge ja Internet Explorer täielikult ES6 spetsifikatsioonist pärit funktsioone.

Murelikud arendajad saavad Babeli abil oma ES6 koodi teisendada funktsionaalselt samaväärseks versiooniks, mis kasutab ainult ES5 funktsioone. Kõik suuremad brauserid toetavad täielikult ES5, nii et nad saavad koodi käivitada ilma probleemideta.

Üks huvitav tidbit veel

Loodan, et leidsite selle JavaScripti ja ECMAScript'i kohta kasuliku teabe. Enne kui siin asjad kokku paneme, tahaksin jagada veel ühte teavet, mis vajab minusuguste alustavate veebiarendajate jaoks täpsustamist.

Kana või muna

Segane osa ajaloost on see, et JavaScript loodi 1996. aastal. Seejärel esitati see 1997. aastal Ecma Internationalile standardimiseks, mille tulemuseks oli ECMAScript. Samal ajal, kuna JavaScript vastas ECMAScripti spetsifikatsioonile, on JavaScripti näide ECMAScripti juurutamisest.

See jätab meile selle lõbusa fakti: ECMAScript põhineb JavaScripti ja JavaScript põhineb ECMAScriptil.

Ma tean.

See kõlab täpselt nagu ajarännaku troopik, kus inimesed on iseenda vanemad - veidi kärsakas, kuid omamoodi lõbus mõelda.

Kõik head asjad

Ma tean, et meil kõigil on siin lõbus olnud, kuid see oli palju teavet, mida seedida. Kasutan seda võimalust hüvasti jätmiseks.

Küsimused, kommentaarid, ettepanekud või mured jätke julgelt allpool.

Suur aitäh lugemast!