Bedre «tekstbehandling» i JavaScript

Sammenlignet med mange andre programmeringsspråk har dagens utgave av JavaScript temmelig begrenset funksjonalitet knyttet til behandling av tekststrenger.

I forrige uke kom Google med en betautgave av Chrome 41. Nytt i denne er blant annet ECMAScript 6-funksjonaliteten Template Strings, også kalt Template Literals, som gir JavaScript utvidet funksjonalitet for behandling av tekststrenger. Template Strings ble først gjort tilgjengelig med Firefox 34 i desember i fjor. Den vil også støttes av Microsofts kommende nettlesere og i Opera 28. Det er ukjent hva Apple planlegger.

Mens tekststrenger i dag kan oppgis mellom det som for enkelhets skyld kalles for enkle (‘ ‘) og doble (” “) sitattegn (egentlig rett apostrof og symbolet for tommer), tar Template Strings i bruk venstreaksenter (` `), også kjent som grav aksent, gravis eller, på engelsk, «backticks».

Mellom venstreaksentene kan man nå, ved å bruke ${ }-syntaksen, sette inn integrerte uttrykk i tekststrengen, som i eksempelet nedenfor.

var a = 10;
var b = 10;
console.log(`JavaScript er ${a+b} år gammelt!`);

//=> JavaScript er 20 år gammelt!

Flere linjer
JavaScript har i dag ingen offisiell støtte for strenger som går over flere linjer. De fleste nettlesere støtter enkelte «hacks» for dette, men dette blir likevel betydelig forenklet med Template Strings hvor en tekststreng som den følgende vil fungere helt fint.

`string text line 1
string text line 2`;

Alle mellomromtegn som står mellom venstreaksentene vil anses som en del av strengen.

XSS
Mange webløsninger er i dag sårbarhet for såkalt Cross-Site Scripting-angrep (XSS), hvor websidene viser innhold som brukerne har lagt inn. Dette kan utnyttes av ondsinnede til blant annet å få tilgang til informasjon som tilhører andre brukere.

I Template Strings finnes det en funksjonalitet som blant annet kan gjøre det enklere å forhindre XSS-angrep i innhold som er satt inn på websider ved hjelp av JavaScript. Funksjonaliteten kalles for Tagged Templates og gjør mulig å transformere en Template String ved å sette en navnet på transformasjonsfunksjonen rett foran strengen, slik som dette:

safehtml`

Hallo ${navn}!

`

hvor «safehtml» for eksempel kan være en funksjon som «escape-er» eller erstatter utrygge HTML-tegn som , ‘, ” og &.

Men Tagged Templates kan også brukes til andre former for kompleks erstatning av tekst, for eksempel lokalisering. Flere eksempler finner på denne siden.

Leave a Reply

Your email address will not be published.