Spring til indhold
Academi.dk

JavaScript

let og const

Begynder DA↔EN-ordliste

let og const er de to måder at oprette en variabel på. const betyder, at navnet ikke må pege på en ny værdi bagefter; let betyder, at det gerne må. Brug const som udgangspunkt, og skift til let, når du opdager, at værdien skal ændre sig undervejs.

Forudsætter, at du har set variabler i javascript .

Den korte regel

Skriv const. Får du en fejl, fordi du er nødt til at ændre værdien, laver du den om til let. Det er hele reglen, og den holder gennem hele første semester.

Grunden til, at man gør det i den rækkefølge og ikke omvendt, er, at const fortæller læseren noget: den her værdi skifter ikke undervejs. Når du senere læser 40 linjers kode igennem for at finde en fejl, kan du springe alle const-linjerne over.

Eksempel
const moms = 0.25;
let pris = 400;

pris = pris * (1 + moms);
console.log(pris);

Output

Tryk på “Kør koden”.

Momsen skifter ikke, mens programmet kører. Prisen gør. Det er præcis den skelnen, de to ord laver.

Hvad const faktisk lover

Her er den detalje, der ofte bliver spurgt til, og som forvirrer i starten: const betyder ikke, at værdien er uforanderlig. Den betyder, at navnet ikke må komme til at pege på noget andet.

Eksempel
const tal = [1, 2, 3];

tal.push(4);
console.log(tal);

Output

Tryk på “Kør koden”.

Det virker. Vi ændrer ikke, hvad tal peger på. Det er stadig den samme liste. Vi ændrer bare noget inde i listen. Derimod:

Eksempel
const tal = [1, 2, 3];

tal = [9, 9, 9];
console.log(tal);

Output

Tryk på “Kør koden”.

Den giver TypeError: Assignment to constant variable, fordi vi prøver at lade navnet pege på en helt ny liste. Samme regel gælder for objekter: felterne må gerne ændres, men navnet må ikke skifte objekt.

var, og hvorfor du ikke skal bruge det

I ældre eksempler på nettet, og i mange svar på Stack Overflow, står der var. Det er den gamle måde, og den opfører sig anderledes på to punkter, der giver svært fangede fejl:

  1. var respekterer ikke blokke. En variabel oprettet med var inde i en if-blok findes også uden for den. let og const findes kun i den blok, de står i.
  2. var kan bruges, før den er oprettet: den er bare undefined. Med let og const får du en fejl, hvilket er langt mere brugbart.
Eksempel
if (true) {
var gammel = "jeg slipper ud";
let ny = "jeg bliver herinde";
console.log(ny);
}

console.log(gammel);

Output

Tryk på “Kør koden”.

Prøv at flytte console.log(gammel) til at hedde console.log(ny) i stedet, og kør igen. Så får du ReferenceError: ny is not defined, for ny findes kun inde i krølleparenteserne.

Hvad du bliver spurgt om

Til en skriftlig prøve er de tre typiske spørgsmål:

  • Hvad er forskellen på let og const? const kan ikke pege på en ny værdi efter oprettelsen; det kan let.
  • Kan man ændre et array, der er oprettet med const? Ja. Indholdet, ikke hvad navnet peger på.
  • Hvorfor bruger man ikke var? Fordi den ikke er begrænset til den blok, den står i, og det giver variabler, der lever længere, end man tror.

Kort opsamling

  • const som standard, let når værdien skal ændres.
  • const låser navnet, ikke indholdet.
  • let og const findes kun inde i den blok, de er oprettet i.
  • var er den gamle måde. Læs den, skriv den ikke.

Læs videre

Senest gennemgået .