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')
}