Kuo skiriasi „JavaScript“ ir „ECMAScript“?

Aš bandžiau ieškoti „skirtumas tarp„ JavaScript “ir„ ECMAScript “.

Galų gale turėjau bristi per dviprasmiškų ir, atrodo, prieštaringų rezultatų jūrą:

„ECMAScript yra standartas.“

„JavaScript yra standartas.“

„ECMAScript yra specifikacija.“

„„ JavaScript “yra ECMAScript standarto įgyvendinimas.“

„ECMAScript yra standartizuotas„ JavaScript “.“

„ECMAScript yra kalba.“

„„ JavaScript “yra ECMAScript dialektas.“

„ECMAScript yra„ JavaScript “.“

Sulaikęs norą verkti, aš pasiryžau ir nusprendžiau imtis skausmingų, tačiau produktyvių tyrimų.

Šis straipsnis atspindi mano dabartinį supratimą apie „JavaScript“ ir „ECMAScript“ skirtumus. Jis skirtas žmonėms, kurie yra susipažinę su „JavaScript“, tačiau norėtų aiškiau suprasti jo ryšį su „ECMAScript“, interneto naršyklėmis, „Babel“ ir kt. Taip pat sužinosite apie scenarijų kalbas, „JavaScript“ variklius ir „JavaScript“ vykdymo laiką, kad būtų galima tinkamai įvertinti.

Taigi išsiurbk.

„JavaScript“ / ECMAScript žodynėlis

Žemiau pateikiamas apibrėžimų sąrašas, sukurtas daugiausia dėmesio skiriant nuoseklumui ir aiškumui. Apibrėžimai nėra išsamūs. Jie sukonstruoti taip, kad aukšto lygio supratimas apie „JavaScript“ ir „ECMAScript“ ryšį ir ryšį.

Pradėkime be jokių tolesnių veiksmų.

„Ecma International“

Organizacija, kurianti technologijų standartus.

Norėdami iliustruoti „standartinio“ pavyzdį (nors ir ne tokį, kurį sukūrė „Ecma“), pagalvokite apie visas kada nors naudojamas klaviatūras. Ar didžioji dauguma turėjo raides ta pačia tvarka ir tarpo klavišą, klavišą Enter, rodyklių klavišus, kurių viršuje rodomi skaičiai iš eilės? Taip yra todėl, kad dauguma klaviatūros gamintojų klaviatūros dizainą grindžia „QWERTY“ išdėstymo standartu.

ECMA-262

Tai yra „Ecma International“ išleistas standartas. Jame yra bendrosios paskirties scenarijų kalbos specifikacija.

ECMA-262 yra toks standartas kaip QWERTY, tačiau užuot pateikęs klaviatūros išdėstymo specifikaciją, jis reiškia scenarijų kalbos specifikaciją, vadinamą ECMAScript.

Pagalvokite apie ECMA-262 kaip apie ECMAScript nuorodos numerį.

Skriptų kalba

Programavimo kalba, specialiai sukurta veikti esamam subjektui ar sistemai

Norėdami sužinoti bendrą tai, kas daro programavimo kalbą scenarijų kalba, apsvarstykite komandas „vaikščioti“, „paleisti“ ir „šokinėti“. Šiems veiksmams atlikti reikalingas kažkas, galbūt žmogus, šuo ar vaizdo žaidimų personažas. Jei aktorius nevykdytų šių komandų, „vaikščioti“, „bėgti“ ir „šokinėti“ nebūtų prasmės. Šis veiksmų rinkinys yra analogiškas scenarijų kalbai, kuri orientuota į manipuliavimą išoriniu subjektu.

ECMAScript

ECMA-262 apibrėžta specifikacija, skirta sukurti bendrosios paskirties scenarijų kalbą.

Sinonimas: ECMAScript specifikacija

Nors ECMA-262 yra standarto pavadinimas, jis žymi scenarijų kalbos specifikaciją ECMAScript.

ECMAScript pateikia taisykles, išsamią informaciją ir gaires, kurių turi laikytis scenarijų kalba, kad būtų laikoma ECMAScript atitinkančia.

„JavaScript“

Bendrosios paskirties scenarijų kalba, atitinkanti ECMAScript specifikaciją.

„JavaScript“ yra kava pagardinta kalba, kuria mėgstu programuoti. ECMAScript yra specifikacija, kuria ji remiasi. Skaitydami ECMAScript specifikaciją sužinosite, kaip kurtiscenarijų kalba. Perskaitę „JavaScript“ dokumentaciją, sužinosite, kaip naudoti scenarijų kalbą.

Kai žmonės vadina „JavaScript“ „ECMAScript kalbos tarme“, jie tai reiškia ta pačia prasme, kaip ir kalbėdami apie anglų, prancūzų ar kinų tarmes. Tarmė didžiąją dalį savo leksikos ir sintaksės gauna iš tėvų kalbos, tačiau nukrypsta tiek, kad nusipelnytų skirtumo.

„JavaScript“ dažniausiai įgyvendina ECMAScript specifikaciją, kaip aprašyta ECMA-262, tačiau egzistuoja keletas skirtumų. „Mozilla“ čia pateikia „JavaScript“ ne ECMAScript kalbos ypatybes:

„JavaScript“ variklis

Programa ar vertėjas, suprantantis ir vykdantis „JavaScript“ kodą.

Sinonimai : „JavaScript“ vertėjas, „JavaScript“ diegimas

„JavaScript“ varikliai dažniausiai randami žiniatinklio naršyklėse, įskaitant „V8“ naršyklėje „Chrome“, „SpiderMonkey“ „Firefox“ ir „Chakra“ „Edge“. Kiekvienas variklis yra tarsi kalbos modulis jo programai, leidžiantis palaikyti tam tikrą „JavaScript“ kalbos pogrupį.

„JavaScript“ variklis naršyklėje yra tarsi kalbos supratimas žmogui.Jei pakartotinai aplankysime savo veiksmų „vaikščioti“, „bėgti“, „šokinėti“ pavyzdį, „JavaScript“ variklis yra „esybės“ dalis, kuri iš tikrųjų supranta, ką reiškia šie veiksmai.

Ši analogija padeda paaiškinti keletą dalykų apie naršykles:

Naršyklės našumo skirtumai

Du žmonės gali atpažinti komandą „šuolis“, tačiau vienas gali greičiau reaguoti į komandą, nes asmuo supranta ir apdoroja komandą greičiau nei kitas. Panašiai dvi naršyklės gali suprasti „JavaScript“ kodą, tačiau viena veikia greičiau, nes „JavaScript“ variklis įdiegtas efektyviau.

Naršyklės palaikymo skirtumai

Apsvarstykite skirtumus, egzistuojančius tarp žmonių, kalbančių ta pačia kalba. Net jei daugelis žmonių kalba angliškai, kai kurie gali žinoti kai kuriuos žodžius, posakius ir sintaksės taisykles, kurių kiti nemoka, ir atvirkščiai. Naršyklės yra tos pačios. Nors visi naršyklių „JavaScript“ varikliai supranta „JavaScript“, kai kurios naršyklės geriau supranta kalbą nei kitos. Naršyklės palaiko kalbą skirtingai.

Kalbant apie naršyklės palaikymą, žmonės paprastai kalba apie „ECMAScript suderinamumą“, o ne „„ JavaScript “suderinamumą“, nors „JavaScript“ varikliai analizuoja ir vykdo… gerai, „JavaScript“. Tai gali būti šiek tiek painu, bet yra paaiškinimas.

Jei prisiminsite, ECMAScript yra specifikacija, kaip gali atrodyti scenarijų kalba . Išleidus naują „ECMAScript“ leidimą, dar nereiškia, kad visi esami „JavaScript“ varikliai staiga turi tas naujas funkcijas. Grupės ar organizacijos, atsakingos už „JavaScript“ variklius, turi atnaujinti naujausias „ECMAScript“ specifikacijas ir priimti jų pakeitimus.

Todėl kūrėjai linkę užduoti tokius klausimus: „Kokią ECMAScript versiją palaiko ši naršyklė?“ arba „Kurias„ ECMAScript “funkcijas palaiko ši naršyklė?“ Jie nori sužinoti, ar „Google“, „Mozilla“ ir „Microsoft“ atnaujino savo naršyklių „JavaScript“ variklius - pavyzdžiui, V8, „SpiderMonkey“ ir „Chakra“ - naudodamiesi naujausioje „ECMAScript“ aprašytomis funkcijomis.

„ECMAScript“ suderinamumo lentelė yra geras šaltinis atsakant į šiuos klausimus.

Jei pasirodys naujas „ECMAScript“ leidimas, „JavaScript“ varikliai vienu metu neintegruos viso atnaujinimo. Jie palaipsniui įtraukia naujas „ECMAScript“ funkcijas, kaip parodyta šioje „Firefox“ „JavaScript“ keitimo žurnalo ištraukoje:

„JavaScript“ vykdymo laikas

Aplinka, kurioje veikia „JavaScript“ kodas, ir ją interpretuoja „JavaScript“ variklis. Vykdymo laikas pateikia pagrindinius objektus, kuriuose „JavaScript“ gali veikti ir dirbti.

Sinonimai : priimančiosios aplinka

„JavaScript“ vykdymo laikas yra „esamas subjektas ar sistema“, paminėtas scenarijų kalbos apibrėžime. Kodas praeina per „JavaScript“ variklį, o jį išanalizavus ir supratus, subjektas ar sistema atlieka interpretuojamus veiksmus. Šuopasivaikščiojimai, žmogusveikia, vaizdo žaidimo personažas šokinėja (arba aukščiau esančio vaizdo atveju - nuolaužos).

Programos suteikia galimybę naudotis „JavaScript“ scenarijais, vykdymo metu pateikdami „pagrindinius objektus“. Kliento pusėje „JavaScript“ vykdymo laikas būtų žiniatinklio naršyklė, kurioje pagrindiniai objektai, tokie kaip „Windows“ ir HTML dokumentai, yra prieinami manipuliavimui.

Ar kada nors dirbote su lango ar dokumentų prieglobos objektais? Langų ir dokumentų objektai iš tikrųjų nėra pagrindinės „JavaScript“ kalbos dalis. Tai yra žiniatinklio API, objektai, kuriuos teikia naršyklė, veikianti kaip „JavaScript“ pagrindinė aplinka. Serverio pusėje „JavaScript“ vykdymo laikas yra „Node.js“. Su serveriu susiję pagrindiniai objektai, tokie kaip failų sistema, procesai ir užklausos, pateikiami „Node.js“.

Įdomus dalykas: skirtingi „JavaScript“ vykdymo laikotarpiai gali naudoti tą patį „JavaScript“ variklį. Pavyzdžiui, V8 yra „JavaScript“ variklis, naudojamas tiek „Google Chrome“, tiek „Node.js“ - dviejose labai skirtingose ​​aplinkose.

ECMAScript 6

Tai šeštasis „ECMA-262“ standarto leidimas, kuriame pateikiami pagrindiniai „ECMAScript“ specifikacijos pakeitimai ir patobulinimai.

Sinonimai : ES6, ES2015 ir ECMAScript 2015

Šis „ECMAScript“ leidimas pakeitė pavadinimą iš ES6 į ES2015, nes 2015 m. „Ecma International“ nusprendė pereiti prie metinių „ECMAScript“ leidimų. Atitinkamai „Ecma International“ taip pat pradėjo įvardyti naujus „ECMAScript“ specifikacijos leidimus pagal jų išleidimo metus. Trumpai tariant, ES6 ir ES2015 yra du skirtingi to paties dalyko pavadinimai.

Babelis

Transpileris, galintis konvertuoti ES6 kodą į ES5 kodą.

Kūrėjai gali naudoti naujas blizgančias funkcijas, kurios pateikiamos su ES6, tačiau gali būti susijusios su kelių žiniatinklio programų suderinamumu su jų žiniatinklio programomis. Rašant šį straipsnį, „Edge“ ir „Internet Explorer“ nevisiškai palaiko ES6 specifikacijos funkcijas.

Susirūpinę kūrėjai gali naudoti „Babel“ savo ES6 kodą konvertuoti į funkciškai lygiavertę versiją, kurioje naudojamos tik ES5 funkcijos. Visos pagrindinės naršyklės visiškai palaiko ES5, todėl jos gali paleisti kodą be jokių problemų.

Dar viena įdomi smulkmena

Tikiuosi, kad ši informacija apie „JavaScript“ ir „ECMAScript“ jums buvo naudinga. Prieš čia apibendrindami dalykus, norėčiau pasidalinti dar viena informacija, kurią reikia patikslinti pradedantiems interneto kūrėjams, tokiems kaip aš.

Vištiena arba kiaušinis

Paini istorijos istorija yra ta, kad „JavaScript“ buvo sukurta 1996 m. Tada ji buvo pateikta „Ecma International“ 1997 m., Kad būtų galima standartizuoti, todėl buvo sukurtas „ECMAScript“. Tuo pačiu metu, kadangi „JavaScript“ atitiko „ECMAScript“ specifikaciją, „JavaScript“ yra „ECMAScript“ diegimo pavyzdys.

Tai mums palieka šį įdomų faktą: ECMAScript yra pagrįstas „JavaScript“, o „JavaScript“ - „ECMAScript“.

Aš žinau.

Tai skamba lygiai taip pat, kaip žmonių, kurie yra jų patys tėvai, kelionė laiku - truputį neapgalvotas, bet apie tai įdomu galvoti.

Visi geri dalykai

Aš žinau, kad mes visi čia smagiai praleidome laiką, bet tai buvo daug informacijos suvirškinti. Pasinaudosiu proga atsisveikinti.

Nedvejodami palikite žemiau visus klausimus, komentarus, pasiūlymus ar rūpesčius.

Labai ačiū, kad skaitėte!