Ejecuté JSLint en este código JavaScript y decía:
Problema en la línea 32, carácter 30: Falta el parámetro de la raíz.
Este es el código en cuestión:
imageIndex = parseInt(id.substring(id.length - 1))-1;
¿Que esta mal aquí?
javascript
jslint
radix
Mike Vierwind
fuente
fuente
Redundant radix parameter
radix
argumento es un valor numérico, no una representación de cadena de un valor numérico, por lo que no hay una raíz para especificar.Para evitar esta advertencia, en lugar de usar:
Puede reemplazarlo por:
Tenga en cuenta que parseInt y Number tienen comportamientos diferentes , pero en algunos casos, uno puede reemplazar al otro.
fuente
parseInt
yNumber
. Aquí hay una vieja prueba de rendimiento .Number()
es 6 veces más rápido queparseInt()
No estoy respondiendo correctamente la pregunta, pero creo que tiene sentido aclarar por qué deberíamos especificar la raíz .
En la documentación de MDN podemos leer que:
Si la raíz está indefinida o 0 (o ausente), JavaScript asume lo siguiente:
Fuente: MDN parseInt ()
fuente
Puede desactivar esta regla si desea omitir esa prueba.
Insertar:
Debajo de la
rules
propiedad " " en eltslint.json
archivo.No se recomienda hacer eso si no comprende esta excepción.
fuente
Agregar lo siguiente en la parte superior de su archivo JS le indicará a JSHint que suprima la advertencia de radix:
Ver también: http://jshint.com/docs/#options
fuente
"-W065": true
, por ejemplo, en un.jshintrc
archivo.Lo resolví simplemente usando el + foo, para convertir la cadena.
Tenga en cuenta que no es bueno para la legibilidad (corrección sucia).
fuente
También puede simplemente agregar esta línea justo encima de su línea parseInt:
Esto deshabilitará la comprobación de eslint para la siguiente línea. Use esto si solo necesita omitir una o dos líneas.
fuente
Simplemente coloque una cadena vacía en el lugar de la raíz, porque parseInt () toma dos argumentos:
parseInt (string, radix);
string El valor a analizar. Si el argumento de cadena no es una cadena, entonces se convierte en una cadena (usando la operación abstracta ToString). Los espacios en blanco iniciales en el argumento de cadena se ignoran.
radix Un número entero entre 2 y 36 que representa la raíz (la base en los sistemas de numeración matemática) de la cadena mencionada anteriormente. Especifique 10 para el sistema de numeración decimal comúnmente utilizado por los humanos. Siempre especifique este parámetro para eliminar la confusión del lector y garantizar un comportamiento predecible. Las diferentes implementaciones producen resultados diferentes cuando no se especifica una raíz, por lo general, el valor predeterminado es 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;imageIndex = parseInt(id.substring(id.length - 1), '')-1;
fuente
Simplemente agregue su regla personalizada en .eslintrc que se ve así
"radix": "off"
y estará libre de esta advertencia de falta de seguridad. Esto es para el eslint linter.fuente
Antes de ECMAScript 5, parseInt () también autodetectaba los literales octales, lo que causaba problemas porque muchos desarrolladores suponían que se ignoraría un 0 inicial.
Entonces, en lugar de:
Hacer esto:
Referencia
fuente
En lugar de llamar a la
substring
función que podrías usar.slice()
Aquí, -1 en el segmento indica que para iniciar el segmento desde el último índice.
Gracias.
fuente