If-setninger

La oss si at vi har en nettbutikk som selger jordbær, men som ikke shipper ordre som har færre enn 10 jordbær.

let strawberryCount = 20
// når ordren er fullført
document.write("Congrats!")
document.write("Sorry, we do not ship orders that small.");

Hvis du skriver dette inn i codepen.io og ser på resultatet, så viser den begge meldingene på en gang, som ikke er det vi ønsker. Så hvordan kan programmet vårt håndtere begge situasjoner? 

Svaret er en if-setning.

let strawberryCount = 20

if (strawberryCount > 9) {
  document.write("Congrats!")
} else {
  document.write("Sorry, we do not ship orders that small.")
}

En if-setning må ikke ha en else-setning..

Det som foregår her, er at vi skriver 

if (noe som er true eller false) {
  // gjør noe
}

Det vil si at inni parantesen må vi gjøre en sjekk av et eller annet. Hvis du skriver ordet true, vil if-setningen alltid gå igjennom. Hvis vi skriver ordet false, vil den aldri gå igjennom. I vårt tilfelle gjør vi en sjekk på størrelser – er strawberryCount, altså tallet 20, større-enn tallet 9? Ja, tallet 20 vil alltid være større enn tallet 9, og vil derfor komme igjennom som true.

True og false er faktisk en egen datatype – på samme måte som tall (9), tekst (“Hello”), arrays ([‘apple’, ‘orange’, ‘pear’]) og objekter ({name: ‘Meowsalot’, race: ‘cat’}). De kalles boolske, eller boolean verdier, og skrives uten anførselstegn. Booleans består kun av true eller false.

For å tilegne en boolsk verdi til en variabel gjør vi følgende:

let testvalue = false

I tillegg til større-enn symbolet > kan man bruke mindre-enn symbolet <. Man kan også bruke større-eller-lik >= eller mindre-eller-lik <=.

Hvis du vil sjekke at en verdi er helt lik en annen, er det kanskje fort å tenke slik:

if (strawberryCount = 5) {
  // feil bruk av lik-tegn
}

Men i javascript brukes enkelt lik-tegn for å tilegne en variabel, så det blir ikke riktig. Når man skal sjekke om noe er likt bruker vi to lik-tegn:

if (strawberryCount == 5) {
  document.write('Lik 5')
}

Denne vil altså kun returnere true dersom strawberryCount er nøyaktig 5.

Det motsatte av denne er ikke-lik tegnet, som vil kun gi true dersom strawberryCount er alt annet enn 5:

if (strawberryCount != 5) {
  document.write('Ikke lik 5')
}

Man trenger heller ikke å bruke en sammeligningsoperator i det hele tatt.

Vi kan f.eks sette inn bare strawberryCount:

if (strawberryCount) {
  document.write('Større enn 0')
}

I denne konteksten vil if-setningen tolke alle tall over 0 som true.

Prøv gjerne å bytte ut innholdet i strawberryCount for å se hva som returnerer true eller false:

// let strawberryCount = 0
// let strawberryCount = true
// let strawberryCount = ""
// let strawberryCount = "hello"

if (strawberryCount) {
  document.write('returns true')
} else {
  document.write('returns false')
}