JavaScript
let og const
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.
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.
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:
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:
varrespekterer ikke blokke. En variabel oprettet medvarinde i enif-blok findes også uden for den.letogconstfindes kun i den blok, de står i.varkan bruges, før den er oprettet: den er bareundefined. Medletogconstfår du en fejl, hvilket er langt mere brugbart.
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å
letogconst?constkan ikke pege på en ny værdi efter oprettelsen; det kanlet. - 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
constsom standard,letnår værdien skal ændres.constlåser navnet, ikke indholdet.letogconstfindes kun inde i den blok, de er oprettet i.varer den gamle måde. Læs den, skriv den ikke.
Læs videre
- Variabler i JavaScript Hvad er en variabel i JavaScript? Kort forklaring på dansk med eksempler, du kan køre i browseren, og de fejl alle laver i starten.
- Scope - hvor en variabel findes Scope i JavaScript forklaret på dansk: hvorfor en variabel fra en funktion ikke findes udenfor, og hvordan du læser ReferenceError is not defined.
Senest gennemgået .