Villkorssatser
Styrkan i programmering och scripting ligger i automation. Väldigt ofta i en process vill man göra något om ett särskilt villkor är uppfyllt. Till exempel:
- När du kommer hem:
- Om dörren är låst: lås upp
- Om dörren är olåst: öppna
- Din telefon plingar:
- Om du är ledig: kolla på telefonen
- Annars: låt bli telefonen
- Det är riksdagsval:
- Om du är över 18: rösta
- Annars: uppmana folk över 18 att rösta
Generellt kan vi säga att en if-sats är uppbyggd så här:
if (villkor){
Kod som ska köras om villkoret är sant;
}
else if (villkor){
Kod som ska köras om villkoret ovanför inte
var uppfyllt men det nya villkoret är uppfyllt.;
}
else{
Kod som ska köras om inget av villkoren ovanför
är uppfyllda.;
}
Villkoret
Det viktigaste i en if-sats är själva villkoret. Villkoret består av minst tre delar:
- Vänsterled
- Operator
- Högerled
if (VL op HL){
}
Vi kan jämföra villkoret med en ekvation eller
en olikhet där vi jämför vänstersidan med högersidan.
Om olikheten är korrekt så svarar JavaScript med "true",
men om olikheten inte stämmer så svarar JavaScript med
false.
x+5 >= 10
om x är 5 eller större så svarar JavaScript true.
om x är mindre än 5 så svarar det med false.
Vi kan också göra komplicerade villkor där flera olika saker måste stämma:
if (x+5 >= 10 && x < 21){
Nu måste både x vara större eller lika med 5 och
x måste vara mindre än 21.
}
När man har ett "och" mellan två villkor så måste båda villkoren vara uppfyllda för att man ska komma in i blocket.
Om man istället vill att samma sak ska hända för två olika villkor kan man lägga till ett "eller" så att om antingen A är sant eller B är sant så kommer det att hända.
if (timme >= 20 || timme <= 6){
Om timme är större än 20 ELLER mindre än 6
}
Genom att ha flera OCH och ELLER så kan man få ett stort och komplicerat villkor som kan klara av flera olika fall. För att lösa ut sådana villkor kan man använda sig utav vad man inom matematiken kallar för boolesk algebra.
Boolesk algebra
I boolesk algebra jobbar man bara med ettor och nollor, addition och multiplikation. Där den stora skillnaden är att 1 + 1 = 1. Och skrivs ∧ och eller skrivs ∨. Sen översätts ∧ till gånger medan ∨ översätts till addition.
(A && B) && (C || D) =
(A ∧ B) ∧ (C ∨ D) =
(A·B)·(C+D)=
A·B·(C+D)=
A·B·C + A·B·D
Det här kan vara användbart för att gå från ett komplext villkor till ett simplare.
Jämförelseoperatorer
| Operator | Betydelse |
|---|---|
| && | och |
| || | eller |
| == | lika med |
| === | exakt lika med |
| < | mindre än |
| > | större än |
| <= | mindre eller lika med |
| >= | större eller lika med |
| != | inte lika med |
| !== | exakt inte lika med |
Ett praktiskt exempel
Tänk att vi vill sätta in en ålderspärr på vår hemsida, så att användaren måste vara över 18 år för att få komma in på sidan. Då kan vi lägga till ett fält där vi kan fylla i vår ålder.
<label for="age">Ålder</label>
<input id="age" type="number" value="15"/>
Nu kan vi lägga till ett skript som läser av värdet i fältet:
<script>
let ålder;
ålder = document.getElementById("age").value;
console.log(ålder);
</script>
Vad händer i koden?
- Vi skapar variabeln
ålder - Vi hittar ett element i vår HTML-kod med
ID="age"och sparar dess värde i variabelnålder. - Vi skriver ut variabeln
ålderi konsolen
Om vi kollar i konsolen på den här sidan nu så ser vi att den skriver ut det värde som står som startvärde i fältet. För att få den att bara kolla på åldern när vi är klara så kan vi lägga till en knapp:
<button id="checkage">Kontrollera ålder</button>
Just nu gör knappen inget och det finns två sätt att få knappen att göra saker. Antingen använder vi HTML attributet "onclick" vilket bör undvikas. Eller så skriver vi JavaScript-kod som lägger till en "lyssnare" till knappen:
<script>
let knappen;
knappen = document.getElementById("checkage");
knappen.addEventListener('click', check_age, false);
</script>
Vad händer i koden?
-
Vi skapar varabeln
knappen -
Vi hittar ett element i vår HTML-kod med
ID="checkage"och sparar den i varabelnknappen -
Vi lägger till att något ska hända när
knappenklickas på. Då ska vi göra något som kallas förcheck_age
Funktionen check_age
Funktioner är block med kod som du kan använda på flera ställen
i sitt script. De används ofta för att göra det lättare för att läsa
och förstå ett script. Genom att ge funktioner tydliga namn så förstår
man vad de gör utan att behöva se själva koden. Till exempel funktionen
check_age som du kan anta kollar åldern.
Kruxet är bara att det finns ingen funktion som heter check_age och som
kollar vad man har skrivit för ålder. Så du måste skapa den själv.
Innan du skapar den funktionen så behöver du fundera på vad den faktiskt ska göra:
- Den ska kolla vad du har skrivit in för ålder
- Den ska jämföra det med åldersgränsen på sidan.
- Om åldern är hög nog så ska du få ett positivt meddelande.
- Om åldern är för låg så ska du få ett negativt meddelande.
<script>
function check_age(){
let ålder;
ålder = document.getElementById("age").value;
if (ålder >= 18){
console.log("Välkommen vidare");
}
else{
console.log("Du är för ung.");
}
}
</script>
Vad händer i koden?
-
När funktionen körs så skapar den variabeln
ålder -
Du läser in värdet som har skrivits i elementet med
id="age"och sparar det i variabelnålder -
Du jämför värdet i variabeln
åldermot talet18 -
Om
ålderär större eller lika med18skriver scriptet utVälkommen vidare
-
Annars skriver koden ut
Du är för ung.