ECMAScript 2025: Tre nyheter i JavaScript du bør lære deg

Den neste store oppdateringen til JavaScript – ECMAScript 2025 – ble offisielt godkjent forrige uke. Her er tre nyheter du bør vite om.

Den neste store oppdateringen til ECMAScript er klar.
Publisert

Juni hvert år kommer det en ny versjon av ECMAScript, språkstandarden som JavaScript er basert på. 

Nå er endelig ECMAScript 2025 klar – og denne gangen er det en masse nytt, skriver nyhetsbrevet Bytes.dev

💡 ECMAScript og TC39

    • Ny funksjonalitet i ECMAScript har gått igjennom flere trinn hos TC39, komitéen som behandler nye forslag til endringer i språket. 
    • Alt som er med i ECMAScript 2025 har nådd trinn 4 og har blitt en del av den offisielle standarden. 
    • Nettlesere har ofte støtte for ny funksjonalitet allerede før den kommer inn i neste ECMAScript-versjon, og ofte kan funksjonaliteten brukes i eldre nettlesere gjennom polyfills. Men sjekk gjerne støtten på caniuse.com og på MDN først.

Her er tre av de mest spennende nyhetene – du finner oversikt over alt som er nytt i den offisielle spesifikasjonen.

#1. Nye hjelpemetoder for iteratorer

De fleste JavaScript-utviklere er antagelig godt kjent med Array-metoder som .map() og .filter()

I ECMAScript 2025 får du nå en rekke metoder med lignende syntaks som fungerer med iteratorer. I motsetning til array-metoder, er disse late (lazy), noe som betyr at operasjonene bare utføres når neste verdi fra iteratoren etterspørres. 

De nye hjelpemetodene for iteratorer er blant annet .map(), .filter(), .take(), .drop() og .toArray()

Her er et eksempel fra MDN på en iterator-funksjon som henter ut neste element i en Fibonacci-sekvens, og der man så bruker den nye .map()-hjelpemetoden for å opphøye hvert element med to (kvadrerer):

function* fibonacci() {
  let current = 1;
  let next = 1;
  while (true) {
    yield current;
    [current, next] = [next, current + next];
  }
}

const seq = fibonacci().map((x) => x ** 2);
console.log(seq.next().value); // 1
console.log(seq.next().value); // 1
console.log(seq.next().value); // 4

I dette eksempelet plukker vi ut de 10 første elementene som iteratoren genererer med  take(10) før vi filtrerer ut alle oddetallene med filter() og deretter konverterer alt sammen til en array med  toArray():

const array = fibonacci()
  .take(10)
  .filter((x) => x % 2 === 0)
  .toArray();

console.log(array); // [2, 8, 34]

#2. Promise.try

Promise.try() er en ny metode som kan være nyttig når du jobber med API-er eller biblioteker som kanskje eller kanskje ikke returnerer en Promise eller kaster (throws) en feil. 

Dette løses gjerne med try/catch på denne måten:

async function doSomething(action) {
  try {
    const result = await action();
    console.log(result);
  } catch (error) {
    console.error(error);
  } finally {
    console.log("Done");
  }
}

Den nye Promise.try()-metoden vil wrappe resultatet av kjøringen av en funksjon i en Promise. Dermed kan du forenkle koden ovenfor til dette:

function doSomething(action) {
  return Promise.try(action)
    .then((result) => console.log(result))
    .catch((error) => console.error(error))
    .finally(() => console.log("Done"));
}

#3. Nye Set-metoder

Set blir utvidet med en masse nye metoder som gjør det enklere å kombinere og sammenligne dem:

  • Union(): Returnerer et nytt Set med alle unike elementer fra begge:
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.union(squares)); // Set(6) { 2, 4, 6, 8, 1, 9 }
  • Intersection(): Returnerer et nytt sett med elementer som er felles i begge settene:
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.intersection(squares)); // Set(2) { 1, 9 }
  • Difference(): Returnerer et nytt sett med elementer som finnes i det første settet, men ikke i det andre.
  • isSubsetOf(): Sjekker om alle elementer i det første settet finnes i det andre. Det er også en isSupersetOf()-metode som gjør det motsatte.

 Det er også en masse annet nytt i ECMAScript 2025 – som blant annet nye funksjoner for regulære uttrykk (RegEx), "import-attributter" for enklere importering av blant annet JSON til JavaScript-filer, og mye mer. 

Syntax-podcasten hadde en fin gjennomgang noen dager før ECMAScript 2025 ble lansert:

Powered by Labrador CMS