EcmaScript 6

Programmeringssproget JavaScript har en mindre kendt slægtning der hedder EcmaScript. Sproget udvikles og standardiseres som EcmaScript, og nye versioner af EcmaScript finder så efterhånden vej til browserproducenternes forskellige implementeringer af JavaScript. Så når der kommer en ny version af EcmaScript er det værd at lægge mærke til, fordi nye ES features med tiden bliver tilgængelige i JavaScript kode.

Den seneste version af EcmaScript (ES6) blev udgivet i juni, og der er flere interessante nyder der kan gøre livet lettere for udviklere der bruger JavaScript. Christian Holm Diget gav en præsentation mandag på GOTO Copenhagen konferencen hvor han blandt andet gennemgik nogle af de nye ES6 features:

  • let: Det er nu muligt at erklære variabler hvis scope er begrænset (i modsætning til variabler erklæret med var der enten er globale eller tilgængelige overalt i den funktion hvor de er erklæret.

  • Arrow funktioner med mere kompakt syntaks. Man kan f.eks. skrive a.map( s => s.length); i stedet for som hidtil a.map(function(s) { return s.length });. Arrow funktioner binder også værdien af this så man ikke behøver selv at gemme den i f.eks. self eller that variabler.

  • Default-værdier af argumenter, så man f.eks. kan skrive function f (x, y = 7, z = 42) { ... sådan som man kende det fra andre programmeringssprog.

  • ... der blandt andet kan bruges til at repræsentere et variabelt antal argumenter som et array, f.eks. function(a, b, ...moreArgs)

  • Template strings, så man f.eks. kan oprette en tekststreng på denne måde:

  • var customer = { name: "Foo" } var card = { amount: 7, product: "Bar", unitprice: 42 }
    message = Hello ${customer.name},want to buy ${card.amount} ${card.product} fora total of ${card.amount * card.unitprice} bucks?

  • Moduler svarende til det man kender fra CommonJS

  • Klasser, dvs. syntaks der gør det lettere at arbejde med JavaScripts objekter og prototyper

Der er en mere udførlig liste over nye features in ES6 tilgængelig på es6-features.org.

De fleste browsere understøtter ikke alle ES6 features endnu (og ældre browsere har slet ikke ES6 support), men man kan bruge en transpiler som f.eks. Babel til at oversætte ES6 til JavaScript som kan anvendes i de fleste browsere.

Support for ES6 er også ved at dukke op i forskellige JavaScript frameworks, f.eks. understøtter Meteor 1.2 allerede flere ES6 features.