Variabler
Last updated
Last updated
JavaScript er dynamisk typet, det vil si at vi ikke definerer hvilken type (int, boolean, string) en variabel er, slik man gjør i språk som Java og C#. Typer bestemmes underveis når et program kjøres, noe som også betyr at den samme variabelen kan bli satt til flere forskjellige verdier og dermed ha hatt flere typer i løpet av kjøringen.
Det er tre måter å deklarere en variabel på i JavaScript, vist under, og av disse anbefaler vi at du bruker enten let
eller const
.
const
brukes om alle konstanter som ikke skal endre seg senere. Resten av variablene burde deklareres med let
, som indikerer at innholdet kan endre seg over tid.
OBS! Glemmer du å deklarere en variabel med var
, let
eller const
, vil variabelen være global.
Før 2015 ble alle variabler i JavaScript deklarert som var
, og er det vi kaller function scoped. Function scoped betyr at uavhengig av hvor variabelen blir deklarert, vil det være ekvivalent med å deklarere den på toppen. Dette fenomenet er kjent som , og har gjennom JavaScript sin historie forårsaket en del , særlig når looper har vært involvert. Dette er også bakgrunnen for at let
og const
er anbefalt å bruke til variabeldeklarasjon etter at det ble del av JavaScript-standarden i 2015.
Her er noen eksempler på hvordan var
fungerer:
let
oppfører seg nesten som var
, og gir oss en variabel vi kan sette flere ganger. Forskjellen ligger i at let
er block scoped. Det vil si at vi får en kjørefeil hvis vi forsøker å aksessere variabelen utenfor blokken den ble deklarert i, og slipper å forholde oss til at variabelen er tilgjengelig i hele funksjonen.
Let kan også brukes i konstruerte (fake) scopes, med samme oppførsel:
På samme måte som let
, er const
også block scoped:
Men hvis vi deklarerer en variabel med const
, er det ikke mulig å tildele den noen ny verdi etter initiering, eller redeklarere den:
Innholdet kan forøvrig fortsatt endres, siden det kun er referansen som er uforanderlig - en liste kan ikke plutselig bli satt til å være et tall eller en annen liste, men man kan fortsatt legge til elementer i den: