Variabler
Programmering består till stor del av beräkningar och bearbetning av data. För att klara av denna datahantering måste man kunna lagra och mellanlagra sina resultat någonstans. Det gör man med hjälp av variabler.
Variabler kan ses som behållare, där man lagrar undan ett visst innehåll under en tid. Som man förstår av namnet kan variablers innehåll variera, d.v.s. de värden de innehåller kan ändras.
När man ger en variabel ett värde säger man att man tilldelar den ett värde. När man tilldelar en variabel ett nytt värde, skrivs det gamla värdet över med det nya innehållet. Om man skulle vilja spara undan det gamla värdet, måste man lägga över det i en annan variabel innan man tilldelar det nya värdet. Därför behöver man ofta använda sig av diverse temporärvariabler när man skriver program.
Användningen av variabler i programmering påminner delvis om hur man använder variabler i matematikens ekvationer, men med några viktiga skillnader. Det som främst skiljer sig är att ”=
”-tecknet inte fungerar som i ekvationer! Det betyder tilldelning, dvs. vi sätter variabeln till ett specifikt värde snarare än att vi säger att höger- och vänsterled är lika. Likaså kan man enbart tilldela ifrån högerled till vänsterled. Med andra ord, variabeln som man vill tilldela ett värde måste alltid stå på vänster sida om ”=
”-tecknet och det man vill tilldela variabeln ska stå på vänster sida. Datorn kommer alltid att beräkna klart hela högerledet och sedan flytta in resultatet i den variabel som anges i vänsterled.
Följande exempel tilldelar värdet två till en variabel som heter tal:
tal = 2;
Ovanstående är alltså en sats som utför en tilldelning. Det har ingenting att göra med likhet eller jämförelse. Variabeln kommer inte att tilldelas värdet två tills exekveringen kommer till raden ifråga.
JavaScript är ett svagt typat språk, det innebär att man inte behöver tala om vilken datatyp en variabel har. Däremot måste man deklarera variabeln, det vill säga man måste skapa variabeln. Gör man inte detta så existerar inte variabeln enligt JavaScript (obs, detta gäller när man kör strict
, vilket man alltid ska göra). När man deklarerar talar man om för interpretatorn, som ska tolka programmet, vad variabeln heter. Namnet kommer sedan att vara konstant, medan den data som variabeln innehåller kan förändras.
I JavaScript deklarerar man variabler med kommandot var
, en deklarationssats kan bli att se ut så här;
var spelare;
När man deklarerat variabeln spelare på det viset, har den fortfarande inte tilldelats något värde. Om du skulle använda den till något annat än tilldelning, kommer kompilatorn att ge en varning. Det är en bra vana att tilldela ett grundvärde till variabler i anslutning till att man deklarerar dem. T.ex. kan man göra så här för att skapa en variabel som har värdet ett ifrån början:
var spelare = 1;
För att senare tilldela ett nytt värde till en variabel, använder man sig av ett vanligt ”=
”-tecken, t.ex.:
spelare = 2;
Efter tilldelningen har variabeln värdet 2
och eventuellt tidigare innehållet skrivs över och "försvinner". När variabeln senare används kommer programmet att titta i ”behållaren” som heter spelare och se att där finns en två (det vill säga, ända tills du tilldelar variabeln ett nytt värde). För programmet är det ingen direkt skillnad om du skriver 2
eller spelare, bägge kommer att tolkas som värdet två (i alla fall tills du tilldelar spelare ett annat värde än 2
). Följande kod är alltså likvärdig;
spelare = 2;
FlyttaRacket( spelare );
Skulle ge samma resultat som;
FlyttaRacket( 2 );
(Förutom att i första exemplet har vi ju kvar värdet två, lagrat i variabeln spelare. Vilket kan vara praktiskt om man vill använda värdet igen. Det är ju även mycket enklare att förstå vad tvåan har för betydelse om värdet ligger i något som heter spelare.)
Man kan deklarera flera variabler samtidigt. Man åtskiljer då de olika variablerna med ett ”,
”-tecken. Om man vill kan man blanda huruvida variablerna får en tilldelning vid deklarationen eller ej. T.ex.:
var spelare = 1, poäng = 0, riktning, tid, highScore = 0;
Föregående rad skapar fem variabler. Variablerna spelare, poäng och highScore tilldelas ett värde redan vid deklarationen. De övriga två, riktning och tid, har inget värde och kan därför inte användas tills man tilldelar dem ett värde. Det enda man kan göra med en variabel som inte blivit tilldelad ett värde är att tilldela den ett värde. Detta för att förhindra att variabler innehåller något slumpmässigt eller okänt.
Man kan säga att variabler har tre grundegenskaper;
- Namn
- Datatyp, vilken inte är så viktig i JavaScript
- ”Räckvidd”/synlighet
Vi går igenom dessa egenskaper var för sig…
Namn och namngivningskonventioner
Varje variabel behöver ett eget namn eller identifierare, så att den går att urskilja från övriga variabler. Namnet bör helst vara beskrivande, så att man enkelt kan förstå vad variabeln används till. Om du t.ex. vill lagra ett personnummer, kanske just personnummer är ett bra variabelnamn.
Det svåraste med programmering är att skriva läsbar och förståelig kod som går att underhålla/förändra senare. Det gäller inte bara att förstå koden just när man skriver den, man måste kunna förstå den om ett år, fem år, tio år… Koden ska även vara så lättläslig och lättförståelig att andra ska kunna förstå och arbeta med koden. Det är därför extra viktigt att välja bra namn för variabler, konstanter, funktioner, osv. Självklart ska man även kommentera koden och förklara mer utförligt vad de olika variablerna är till för.
Om du kommer att jobba som programmerare kommer du säkert att hamna på ett ställe där man har en förutbestämd mall för hur all kod ska se ut. Det kan gälla alltifrån hur många tabbar eller mellanslag varje rad ska indenteras med, till bestämmelser för hur variabler och liknande ska namnges. När alla följer en sådan mall får man mer enhetlig kod som är lättare att underhålla och förstå för alla på arbetsplatsen.
Namngivningsregler
Man kan inte använda vilka tecken som helst när man namnger saker. Dessa regler gäller alla saker som kan namnges, t.ex.; variabler, konstanter, metoder... I JavaScript har man följande namngivningsregler:
Variabelnamn måste börja med en bokstav eller ett ”_”-tecken. Du kan alltså inte påbörja ett variabelnamn med en siffra. Svenska bokstäver fungerar bra i variabelnamn (det fungerar faktiskt bra med de flesta alfabeten).
Man kan inte ha mellanslag eller liknande blankstegstecken i ett variabelnamn, då använder man oftast ”_”-tecknet istället.
Vissa tecken fungerar inte i variabelnamn. Ett exempel på detta är "-"-tecken, för då fattar inte C# om du vill subtrahera eller om det är en del av ett namn. Det är alltså bäst att hålla sig till de vanliga tecknen i vårt grundalfabet. Samma sak gäller för alla räknesätten; +, -, /, *.
Man kan inte heller använda samma namn som används av de inbyggda kommandon, t.ex. kan du inte ha en variabel som heter ”if
” eller ”for
”.
I JavaScript är variabelnamn känsliga för versaler/gemena, dvs stora och små bokstäver. Det betyder att följande satser hänvisar till helt olika variabler;
var Variabeln;
var variabeln;
var VaRiAbElN;
2. Datatyp Datatyp är vilken sorts data/information en variabel innehåller. Olika exempel på datatyper kan vara tal, sträng (vanlig text), osv. JavaScript är dock ett svagt typat språk och man anger inte vilken datatyp en variabel har. Istället tolkar JavaScript variabelns innehåll utifrån hur den används. Behövs en textsträng, tolkar det den som en textsträng och behövs ett tal, tolkar den det som ett tal. Ibland kan detta dock bli lite "fel", JavaScript kanske tolkar ditt tal som en textsträng. I sådana fall finns det metoder som gör att man kan "övertala" JavaScript att tolka på ett korrekt vis.
var enSträng = "Vanlig text";
var ettHeltal = 1;
var ettDecimaltal = 1.5;
Observera även att JavaScript, liksom de flesta programmeringsspråk är på engelska och att man därför använder ”.
” istället för ”,
” i decimaltal. Kommatecknet används istället för att avgränsa de olika delarna när man skriver in olika typer av listor.
Räckvidd och synlighet
Variabler kan antingen gälla i en funktion eller globalt. Variabelns räckvidd och synlighet kallas för ”scope” på engelska. Var man kan använda en variabel beror på var den deklareras. Rent generellt kan man säga att en variabel enbart är tillgänglig i den funktion där dess deklaration står. Utanför funktionen existerar inte variabeln.
Detta betyder alltså att du i många fall kan ha variabler med samma namn i olika delar av ditt program, utan att de på något sätt påverkar varandra. Detta då de ses som helt olika variabler, trots att de heter lika.
Variabler skapas och tas bort dynamiskt allteftersom programmet körs. En variabel som deklarerats inuti en funktion försvinner när den avslutande "}
" nås (förutom i några specialfall som vi återkommer till). Om ditt program kommer tillbaka till samma function, t.ex. om du kallar på samma funktion två gånger i rad, så återskapas variablerna på nytt och försvinner återigen när funktionen är avklarad. Inga variabelinnehåll sparas mellan gångerna, så om du behöver ha kvar ett värde måste du på något sätt spara undan det. Kanske du skriver ner det på disk i en fil eller kanske du har en variabel som ligger ”högre” upp i hierarkin och sparar ditt värde där.