Bonjour,
j'ai découvert il y a peu, en développant un projet, un bug assez cocasse en javascript et qui a eu de quoi me rendre fou un certain temps avant de trouver la solution.
J'avais une chaîne de caractère: '08' que je voulais parser en int. J'utilise donc la fonction parseInt() de javascript qui me renvoie alors 0. Pensant que la chaîne était mal prise en compte, je test avec '09' pareil, avec '07' OK, '10' OK, '01' OK... ce sont donc uniquement '08' et '09' qui me renvoyaient 0. Pourquoi?
Il existe en fait un bug dans la fonction parseInt dans le cas où vous voudriez parser ces chaînes de caractères '08' ou '09'. Pourquoi pas pour '07' et '10' alors? C'est en fait parce que le navigateur croit que le 0 que nous tapons en premier signifie que nous voulons parser sur une base octale (base 8) et 8 et 9 n'existent pas dans cette base.
Nous avons alors deux solutions:
-
Parser en float puis parser en int ou parseInt(parseFloat('08'));
-
Forcer la base 10 en faisant un parseInt('08',10);
J'espère que ce tips vous sera utile au cas où vous rencontriez ce problème