histoire d'un bug js, "Piège de l'octal" (sans Bruce Willis)
À 20:18 dans la rubrique Techno du web
←
/ #1037
/ rss
/ →
[js]
var foo= 0074760629;
alert('foo+'!'); -> display 0074760629!
var foo= 0074760627;
alert('foo+'!'); -> display 15982999! !!!!
var foo= '0074760629';
alert('foo+'!'); -> display 0074760629!
var foo= '0074760627';
alert('foo+'!'); -> display 0074760627!
Pourquoi donc parfois foo prend bien la valeur que je donne et parfois non ?
En fait dans le code réel, 0074760629 était dans une variable php avec un
var foo = <?php echo $foo; ?>;
Je n'avais pas remarqué le 00. Une fois que je l'ai vu je me suis dit c'est comme en php où 0 = nombre octal. (et 0x pour hexa)
Pourquoi ca marchait parfois ? (ce qui par malchance a masqué le problème pendant nos tests.)
0074760629 <- il y a un 9 donc forcément pas octal donc accepté comme décimal.
Par contre que 0074760627 <- tout est entre 0 et 7 -> 74760627 en octal donne 15982999 en décimal.
On est pas les premiers à s'être laissé piéger








Commentaires
1. Le vendredi 27 novembre 2009 à 21:44, par Seb Delcampe
Ajouter un commentaire