Hvad er der galt med Javascript-versioner?

Jacascript-verdenen kan være en forvirrende verden. Folk taler om ECMAScript, Javascript, ES5 og ES2015 (som forresten er det samme som ES6).

I denne artikel vil jeg forklare Javascript-landskabet.

Javascript Yellow – Photo by Joseph Gruenthal on Unsplash

ECMAScript er en sprogspecifikation, og Javascript implementerer denne specifikation.

Hvert par år udgiver ECMAScript en ny version. Grundlæggende indeholder den nye version en liste over nye funktioner, der skal tilføjes.

For eksempel kunne der i den nye ECMAScript-version være en ny funktion: add(), der adderer to tal.

Sådan kan man endelig addere 2 tal med en funktion – jeg ved godt, at det ikke er en nyttig funktion, men bær over med mig for eksemplets skyld 🙌

const result = add(12, 4);
console.log(result);

Når dette er besluttet, er det op til alle Javascript-fortolkere at implementere denne nye funktion.

Javascriptfortolkere

En Javascriptfortolker er et program, der vil læse og udføre Javascript-kode. Alle browsere, der understøtter Javascript, er Javascript-fortolkere.

Ud over browsere findes der også andre Javascript-fortolkere. NodeJS er et primært eksempel på en fortolker, der lader os udføre Javascript uden for en browser. Det er en fortolker, fordi den også læser og udfører Javascript (samt leverer API’er til operativsystemet).

Det er ikke alle, der opdaterer deres browser, og det er ikke alle browsere, der understøtter de samme Javascript-funktioner. Og det er her, tingene bliver rodet.

Den seneste ECMAScript-version er ES10. Det er dog ikke alle browsere, der understøtter denne nye ES-version, da de stadig skal implementere de nye funktioner.

Dertil kommer, at der er mange mennesker med forældede versioner af deres browser, så det kan tage et stykke tid, før alle brugere kan udføre de nye smarte ES10-funktioner.

ES-versioner

Lad os tage en lille omvej og tale om ES-versioner.

Som jeg har nævnt i det foregående afsnit, er den seneste version af ECMAScript ES10. Nu er der ikke rigtig nogen navnekonvention, når det drejer sig om ECMAScript-versioner. Så ES10 kaldes også ECMAScript2019 og ES2019.

Dertil kommer, at den sidste virkelig store ændring af sproget var med ES6, som udkom i 2015, så det kaldes nogle gange også ES2015 – Ja, det er forvirrende, det ved jeg 😌

Da der kun er mindre ændringer af sproget efter ES6, kaldes alle versioner efter ES6 nogle gange også ESNext.

Javascript Transpilers

Huskede du problemet med, at ikke alle browsere understøtter de nyeste ES10-funktioner? Der findes en løsning. Transpilere!

Babel er et eksempel på en Javascript-transpiler. Babel konverterer en nyere Javascript-version til en ældre version. På den måde kan du bruge de nye smarte ES10-funktioner og lade Babel transpile det til den bredt understøttede ES5-version.

Forskellen mellem NodeJS og Browsere

NodeJS og Browsere er begge Javascript-tolkeprogrammer. Afhængigt af hvilken browserversion og hvilken Node-version du har, kan de understøtte den samme version af ECMAScript.

Det er dog sådan, at Node udføres direkte på en computer. Det betyder, at der er en række biblioteker, der følger med Node, som ikke fungerer i browseren.

I NodeJS kan du f.eks. I en browser ville dette være en stor sikkerhedsrisiko, så det er ikke muligt.

Det er derfor, at NodeJS programmer skrevet i den samme ECMAScript-version stadig ikke vil køre i din browser, der understøtter den samme version.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.