Till Startsidan
JavaScript.nu / JavaScript-kurs / Strängar och numeriska variabler

LÄR DIG SPRÅKET JAVASCRIPT
Strängar och numeriska variabler

Nu när du har lärt dig att skriva JavaScript så har du hela tiden använt dig av strängar, aldrig av tal. De tal du har använt är egentligen strängar som bara består av siffror. Detta låter svårare än det egentligen är. Nedan ser du ett exempel:

<SCRIPT LANGUAGE="JavaScript">
<!--
tal=100;
strang=("100");
en_likadan_strang="100";

alert("Talet: "+tal);
alert("Strängen: "+strang);
alert("En exakt likadan sträng: "+en_likadan_strang);
//-->
</SCRIPT>
Scriptet ovan lagrar...
Talet 100 i variabeln tal (som är en talvariabel).
En sträng som innehåller en etta och två nollor (100) i variabeln strang (som är en strängvariabel).
En sträng som innehåller en etta och två nollor (100) i variabeln en_likadan_strang (som alltså inte har någon som helt skillnad gentemot variabeln strang).

Visserligen så ser dessa tre variabler ut som samma sak, fast det finns en skillnad - de är av olika typer. Detta ska vi titta på lite mera här nedan.

Här har vi ett script som lagrar en talvariabel (tal) och en strängvariabel (strang). Sedan "plusas" variablerna ihop med sig själva. Kolla först på scriptet nedan och gissa vad det kommer att stå i de två olika alertrutorna, och varför. Se sedan om du hade rätt här.

<SCRIPT LANGUAGE="JavaScript">
<!--
tal=1;
strang="1";

tal=tal+tal;
strang=strang+strang;

alert("Talet plus sig själv: "+tal);
alert("Strängen plus sig själv: "+strang);
//-->
</SCRIPT>
Har du testat scriptet?
Blev svaret det du trodde?
Det kan se konstigt ut, fast är egentligen helt logiskt. Tar du två tal och plusar ihop dem så blir svaret summan av talen:
1 + 1 = 2

Sätter du istället ihop två strängar (meningar) så blir resultatet den första strängen plus den andra:
En etta plus en etta blir två ettor (som i vårt fall kan, när man bara ser strängen, se ut som talet elva, vilket det alltså inte är).

För att visa ett till exempel så ska vi här använda ett nytt kommando typeof(). Kolla på scriptet nedan och se hur resultatet blir.

<SCRIPT LANGUAGE="JavaScript">
<!--
tal=1;
strang="1";

alert("Talet är ett: "+typeof(tal));
alert("Strängen är en: "+typeof(strang));
//-->
</SCRIPT>
Som du såg stod det att variabeln tal är ett number och att variabeln strang är en string.

Tänk på detta när du deklarerar variabler (ger en ny variabel ett värde). Ska det vara ett tal, använd inte citationstecken.

Hur ändrar man då ett tal till en sträng? Dvs om jag har ett tal, hur får jag det att bli en sträng?
Detta är ganksa simpelt. Det räcker med att plusa till en strängvariabel till en talvariabel så bli resultatet en strängvariabel.
Svårt att förstå?
Kolla på scriptet nedan så märker du vad som händer.

<SCRIPT LANGUAGE="JavaScript">
<!--
tal=1;
strang="1";
blandat=tal+strang;

alert("Sätter man ihop en string och en number med varandra så blir resultatet: "+typeof(blandat));
//-->
</SCRIPT>
På detta sätt kan man plusa ihop en tom strängvariabel med en talvariabel så blir resultatet en strängvariabel vars innehåll matchar talvariabelns. Fast JavaScript har även färdiga kommandon för att göra om talvariabler till strängvariabler och vice versa. Nedan visas ett scipt som visar detta:
<SCRIPT LANGUAGE="JavaScript">
<!--
tal=1;
strang="1";

andrat_tal=tal.toString();
andrad_strang=parseInt(strang);

alert("Talet som blev en sträng är nu en: "+typeof(andrat_tal));
alert("Strängen som blev ett tal är nu ett: "+typeof(andrad_strang));
//-->
</SCRIPT>
Här ser du hur man med toString() kan omvanda ett tal till en sträng och hur man med parseInt() kan omvandla en sträng till ett heltal. Observera att det parseInt() gör är att ta en träng och göra om det till det första heltalet som det finner. Decimaltalen kapas av, de avrundas inte (för avrunding av tal, se kapitel 16).
Nedan visas några exempel på parseInt:
Exempel                          Resultat
parseInt("123.456")              123
parseInt("123.456abc")           123
parseInt("123,456")              123
parseInt("123 456")              123
parseInt("   123   456   ")      123
parseInt("123abc456")            123
parseInt("abc123def456ghi")      NaN  (Not a Number)
parseInt("abc")                  NaN  (Not a Number)
Ovan ser du hur parseInt kan omvandla strängar till heltal. Skulle du istället vilja ha hela tal, dvs även decimalerna, så får du använda parseFloat(). Tänk på att JavaScript använder en punkt (.) istället för en decimal (,) när den använder decimaltecken. Ett vanligt decimaltecken räknas som ett vanligt tecken utan någon matematisk funktion.
Nedan ser du samma exempel som ovan fast med parseFloat:
Exempel                            Resultat
parseFloat("123.456")              123.456
parseFloat("123.456abc")           123.456
parseFloat("123,456")              123
parseFloat("123 456")              123
parseFloat("   123   456   ")      123
parseFloat("123abc456")            123
parseFloat("abc123def456ghi")      NaN  (Not a Number)
parseFloat("abc")                  NaN  (Not a Number)


Äntligen är kapitel 19 färdigt så du kan hoppa vidare till det tjugonde kapitlet.






Copyright © Omid Rouhani 1997-2022; Alla rättigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]