¿Porqué Javascript retorna cero para parseInt('08') y parseInt('09')?

Sólo un idiota puede ser totalmente feliz.

Mario Vargas Llosa

Suscríbete al feed

Comentarios recientes

Escribiendo una sencilla función Javascript para crear un objeto Date a partir de una cadena con formato 'yyyy-mm-dd' me encontré con una particularidad de la función parseInt, usada para transformar cadenas en enteros.

Tanto parseInt('08') como parseInt('09') retornan cero debido a que la función pretende determinar la base del sistema de numeración usado para la conversión y en Javascript los números que empiezan en cero se consideran de base octal. 08 y 09 no existen en el sistema octal y allí el problema.

Para resolverlo basta con usar el segundo parámetro de parseInt, que es justamente la base del sistema de numeración a usar. Las llamadas correctas serían entonces: parseInt('08', 10) y parseInt('09', 10).

Otro de esos detallitos, ¿no?

Participa en la discusión

Javascript y números octales

Tienes razón, eso está en la documentación y no es un bug, no quise decir que lo fuera, pero a muchos se nos puede pasar y es importante recordarlo.

Gracias por el comentario. Saludos.

Alexis Bellido

Muchas gracias por la

Muchas gracias por la aclaración. Ya estabamos pensando que el javascript era una mierda. Y resulta que es una auténtica mierda.

Gracias a ti, sabemos como rebuscar dentro de la basura.

Como simple usuario, solo

Como simple usuario, solo decir que hace 8 y 10 años navegaba tan feliz con IE, Opera, Mozilla o lo fuera.

Ahora cada vez más el 50% del tiempo me trago errores de Javascrpit en webs que creo podrian haberse diseñado en su totalidad sin Javascript y de hecho antes no lo tenian.

Gracias!!!! me estaba

Gracias!!!! me estaba volviendo loca!!!!!

Jajaja, muchas gracias compañer@

Publica comentarios relevantes, usa español correcto y no envíes publicidad. Creemos discusiones en las que valga la pena participar. Puedes usar Markdown.

Tu comentario