mboost-dp1

Javascript parseInt()


Gå til bund
Gravatar #1 - milandt
21. mar. 2008 16:36
Hvad er grunden til at 08 og 09 returnerer 0?!

document.write(parseInt("01") + "<br />");
document.write(parseInt("02") + "<br />");
document.write(parseInt("03") + "<br />");
document.write(parseInt("04") + "<br />");
document.write(parseInt("05") + "<br />");
document.write(parseInt("06") + "<br />");
document.write(parseInt("07") + "<br />");
document.write(parseInt("08") + "<br />");
document.write(parseInt("09") + "<br />");
document.write(parseInt("10") + "<br />");

Output:
1
2
3
4
5
6
7
0
0
10
Gravatar #2 - arne_v
21. mar. 2008 16:37
Jeg kender ikke meget til JavaScript, men hvis jeg skulle gætte:
- tal der starter med 0 opfattes som oktaler
- 8 og 9 er ikke valid i oktaler
Gravatar #3 - arne_v
21. mar. 2008 16:38
Hypotesen kan nemt testes med:

document.write(parseInt("010") + "<br />");
Gravatar #4 - amokk
21. mar. 2008 16:53
angiv en radix parameter på 10, så virker det
http://www.w3schools.com/jsref/jsref_parseInt.asp
Gravatar #5 - myplacedk
21. mar. 2008 16:53
Det korte svar:

Brug et 10-tal som andet argument: parseInt("08", 10) == 8

Det lange svar:

Andet argument angiver radix. Hvis radix ikke er angivet prøver den at gætte. Starter tallet med "0x" eller "0X", er det hexidecimal (radix 16. Starter tallet med "0" er det op til parseren (dvs. browseren) om den skal gætte på oktal (radix 8) eller decimal (radix 10).

Dvs. "08" kan fortolkes som oktal. Men da 8 ikke giver mening i oktal (som går fra 0-7) stopper den med at tolke efter nullet - ergo giver det nul.
Gravatar #6 - myplacedk
21. mar. 2008 16:54
Og #5 var så efter ecmascript-standarden, som heller ikke bliver fulgt. Men i dette tilfælde tror jeg at både Javascript (Firefox) og JScript (IE) passer med ecmascript.
Gravatar #7 - milandt
21. mar. 2008 17:23
Tak for svaret og forklaringen alle 3 :)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login