Datatypar
![Magnetar forma som tal og bokstavar, i forskjellige fargar. Foto.](https://api.ndla.no/image-api/raw/sy6c725f.jpg?width=1024&cropStartX=98.94979508196721&cropEndX=3.9702868852459017&cropStartY=63.2599043715847&cropEndY=11.074112021857923)
I mange programmeringsspråk er det å angi datatype ein del av å deklarere ein variabel. I JavaScript blir datatypen sett automatisk når vi tilordnar ein verdi til ein variabel, men det er likevel viktig å forstå datatypar, sidan ein del feil kan oppstå av at programmet tolkar ein datatype feil.
Under er dei viktigaste datatypane i JavaScript.
Tal
![Leiketal og matematiske teikn i ulike fargar som viser reknestykket 4 pluss 4 er lik 8. Foto.](https://api.ndla.no/image-api/raw/24wpyYxd.jpg?width=1024)
Tal kan vere heiltal eller desimaltal. Tal skal skrivast samanhengande utan mellomrom, og for desimaltal må du bruke punktum som desimalmarkør (til dømes 3.14
, ikkje 3,14
). Dette er fordi komma blir brukt ved opplisting, og det vil derfor tolkast feil.
Operatorar
Tal kan brukast i matematiske operasjonar med operatorane +
(pluss), -
(minus), *
(gonge), **
(opphøgd i), /
(dele) og %
(modulo – rest ved heiltalsdivisjon). Her er nokre døme:
matematiske operasjonar
1let x = 2;
2let y = 3;
3let sum = x + y; // 5
4let differanse = x - y; // -1
5let produkt = x * y; // 6
6let kvotient = x / y; // 0.66666667
Tekst
![Scrabble-brikker som ligg på eit tastatur. Foto.](https://api.ndla.no/image-api/raw/5022680244_8a34b71159_z.jpg?width=1024)
Ein tekst, eller streng (string), kan bestå av bokstavar, tal, teikn og mellomrom. Tekst skal alltid skrivast med hermeteikn (" "
), apostrofar (' '
) eller backticks (` `
).
Det er ingen forskjell om vi bruker (doble) hermeteikn eller (enkle) apostrofar rundt teksten, men vi kan kombinere dei om vi treng å bruke ein av dei som ein del av teksten, til dømes
let tekst = 'Favorittsongen til Linda er "
All Too Well
" av
Taylor Swift
.';
Her vil hermeteikna bli ein del av teksten, og det som blir lagra i variabelen tekst
, blir då Favorittsangen til Linda er "All Too Well" av Taylor Swift.
Konkatenering
Ein tekst kan setjast saman av fleire variablar med plussteikn mellom. Det blir kalla strengkonkatenering. Her er eit døme:
let alder = 18;
let tekst = "Linda er " + alder + " år gammal."
Det som blir lagra i variabelen tekst
, er då Linda er 18 år gammal. Legg merke til at vi må legge inn mellomrom i teksten mellom hermeteikna.
Interpolasjon
Ein meir elegant måte å setje saman fleire variablar til ein tekst på er å bruke noko som blir kalla strenginterpolasjon, template literals eller backticknotasjon. Då må vi bruke backticks, som på norsk er aksentsymbol (` `
). Med backticknotasjon treng vi ikkje å dele opp teksten i fleire delar med plussteikn imellom, men i staden set vi variabelnamna inne i krøllparentesar med eit dollarteikn framfor, slik: ${ }
. For dømet over blir det slik:
let tekst = `Linda er ${alder} år gammal.`
Det som blir lagra i variabelen tekst
, er då det same som i dømet over: Linda er 18 år gammal.
Du finn backtickteiknet på tastaturet ved å trykke på Shift-tasten saman med tasten rett til venstre for korrekturtasten (backspace).
Boolsk variabel (boolean)
![2-pola brytar til vegg. Foto.](https://api.ndla.no/image-api/raw/2018_tomknudsen_ndla_elektro_2-poltbryter_04.jpg?width=1024)
Ein boolsk variabel er ein datatype som berre kan ha ein av to verdiar: sann (true) eller usann (false). Denne blir brukt til å angi om ein tilstand er aktivert eller ikkje, til dømes om ein brytar er av eller på. Boolske variablar blir brukte som vilkår i valsetningar (if-setningar) og lykkjer (loops), til dømes:
if(brytarErPå){
// ...
}
If-setninga køyrer berre viss variabelen brytarErPå
har verdien true
.
Logiske utrykk
Logiske uttrykk er ein type matematiske uttrykk som berre kan vere sanne eller usanne. Slike utrykk produserer derfor boolske verdiar. Eit døme på eit logisk uttrykk er x < 3
, som gir resultatet false
dersom x er større enn eller lik 3, og true
dersom x er mindre enn 3.
Logiske operatorar
Det finst fleire logiske operatorar som kan brukast i logiske uttrykk. Her er nokre døme:
Logiske uttrykk
1let x = 3;
2let y = 5;
3
4let mindreEnn = x < y; // true
5let størreEnn = x > y; // false
6let mindreEnnEllerLik = x <= y; // true
7let størreEnnEllerLik = x >= y; // false
8let erLik = x == y; // false
9let erLikOgSameType = x === y; // false
10let erIkkjeLik = x != y // true
11let erIkkjeLik = !erLik // true
Undefined og null
Undefined og null er to datatypar som angir at ein variabel ikkje har nokon verdi. Undefined angir ein variabel som er deklarert, men som ikkje har fått nokon verdi. Null angir ein tom variabel, altså ein variabel som har vorte tilordna null-verdien. Verdien null må ikkje forvekslast med talet 0, då talet 0 har ein verdi, mens null angir at det ikkje finst nokon verdi. I matematikken blir dette kalla den tomme mengda, eller Ø.
Forskjellen på undefined og null er nyttig å kjenne til, til dømes ved feilsøking.
Konvertering mellom datatypar
Nokre gonger kan ein verdi tolkast som ein annan datatype enn det som er meint, spesielt dersom verdiar blir henta inn frå eit eksternt dokument, til dømes ein tekstboks i eit HTML-dokument. Ein typisk feil er at eit tal blir tolka som tekst, og vi får feil som 5 + 3 = 53
. Dette blir gjort fordi programmet prøver å setje saman tala med strengkonkatenering i staden for å legge dei saman. Då må vi konvertere variablane for å seie frå korleis programmet skal tolke verdiane.
Konvertere frå tekst til tal
For å konvertere ein tekstvariabel til tal bruker vi funksjonen Number
()
, slik:
let teksttal = "3";
let tal =
Number
(teksttal);
Number()-funksjonen vil i dette dømet returnere talet 3.
Dersom variabelen vi prøver å konvertere, ikkje inneheld eit tal, vil Number()-funksjonen returnere teksten NaN, som betyr "not a number".
Konvertere frå tal til tekst
Nokre gonger kan det vere nyttig å gjere om ein talverdi til ein tekstverdi. Då bruker vi metoden .toString()
. Denne blir hekta på variabelen vi vil konvertere, slik:
let teksttal = tal.toString();