javascript - parameter - JSLint dice "parámetro radix faltante"; ¿Qué tengo que hacer?
parseint javascript (8)
Agregar lo siguiente en la parte superior de su archivo JS le indicará a JSHint que suprima la advertencia de raíz:
/*jshint -W065 */
Véase también: http://jshint.com/docs/#options
Corrí JSLint en este código de JavaScript y dijo:
Problema en la línea 32 carácter 30: Falta el parámetro radix.
Este es el código en cuestión:
imageIndex = parseInt(id.substring(id.length - 1))-1;
¿Que esta mal aquí?
Lo resolví simplemente usando el + foo, para convertir la cadena.
Tenga en cuenta que no es ideal para la legibilidad (corrección sucia).
console.log( +''1'' )
// 1 (int)
No estoy respondiendo correctamente a la pregunta, pero creo que tiene sentido aclarar por qué deberíamos especificar la base .
En la documentación de MDN podemos leer que:
Si radix no está definido o es 0 (o está ausente), JavaScript asume lo siguiente:
- [...]
- Si la cadena de entrada comienza con "0", la raíz es ocho (octal) o 10 (decimal). Exactamente qué radio se elige depende de la implementación. ECMAScript 5 especifica que se usa 10 (decimal), pero no todos los navegadores lo admiten todavía. Por esta razón, siempre especifique un radix cuando use parseInt.
- [...]
Fuente: Reference
Para evitar esta advertencia, en lugar de utilizar:
radix: false
Puede reemplazarlo por:
parseInt("999", 10);
Tenga en cuenta que parseInt y Number tienen comportamientos diferentes , pero en algunos casos, uno puede reemplazar al otro.
Puede desactivar esta regla si desea omitir esa prueba.
Insertar:
Number("999");
Bajo la propiedad " rules
" en el archivo tslint.json
.
No se recomienda hacerlo si no entiende esta excepción.
Siempre es una buena práctica pasar radix con parseInt -
parseInt(string, radix)
Para decimal
parseInt(id.substring(id.length - 1), 10)
Si se omite el parámetro radix, JavaScript asume lo siguiente:
- Si la cadena comienza con "0x", la raíz es 16 (hexadecimal)
- Si la cadena comienza con "0", la raíz es 8 (octal). Esta característica está en desuso
- Si la cadena comienza con cualquier otro valor, la raíz es 10 (decimal)
( Reference )
Simplemente coloque una cadena vacía en el lugar de radix, porque parseInt () toma dos argumentos:
parseInt (string, radix);
cadena El valor a analizar. Si el argumento de cadena no es una cadena, entonces se convierte en una cadena (utilizando 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 el radix (la base en 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;
También puede simplemente agregar esta línea justo arriba de su línea de parseInt:
// eslint-disable-next-line
Esto deshabilitará la verificación de eslint para la siguiente línea. Use esto si solo necesita saltar una o dos líneas.