El peligro octal de JavaScript: soluciones para el mal comportamiento de parseInt
La función parseInt de JavaScript puede fallar cuando encuentra números con ceros a la izquierda. El problema surge de su tendencia a interpretar los ceros iniciales como dígitos octales, lo que genera resultados erróneos.
Ejemplo:
parseInt('01'); // 1 parseInt('08'); // 0 (invalid octal digit)
Soluciones alternativas:
La solución más sencilla es proporcionar explícitamente la base o base del número. Esto se puede hacer usando el segundo parámetro de parseInt:
parseInt('08', 10); // 8 (specifying base 10)
Como alternativa, el constructor de números se puede utilizar para analizar números, incluidos aquellos con ceros a la izquierda:
Number('08'); // 8
Otro enfoque es convertir la cadena a base 10 antes de analizarla:
parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
Se pueden emplear expresiones regulares para eliminar los ceros a la izquierda:
parseInt(/^0 (.*)$/gm('008')); // 8 (match and capture non-zero digits)
Nota:
En la quinta edición de JavaScript (ECMA-262), el comportamiento de parseInt ha cambiado, eliminando La cuestión de la interpretación octal. Sin embargo, para lograr compatibilidad con versiones anteriores de JavaScript, se recomienda utilizar una de las soluciones alternativas mencionadas anteriormente cuando encuentre números con ceros a la izquierda.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3