Ho eseguito JSLint su questo codice JavaScript e ha detto:
Problema alla riga 32 carattere 30: parametro radix mancante.
Questo è il codice in questione:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Cosa c'è che non va qui?
Ho eseguito JSLint su questo codice JavaScript e ha detto:
Problema alla riga 32 carattere 30: parametro radix mancante.
Questo è il codice in questione:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Cosa c'è che non va qui?
Risposte:
È sempre buona norma passare radix con parseInt -
parseInt(string, radix)
Per decimale -
parseInt(id.substring(id.length - 1), 10)
Se il parametro radix viene omesso, JavaScript presuppone quanto segue:
( Riferimento )
Redundant radix parameter
radix
argomento è un valore numerico, non una rappresentazione di stringa di un valore numerico, quindi non è necessario specificare una radice.
Per evitare questo avviso, invece di utilizzare:
parseInt("999", 10);
Puoi sostituirlo con:
Number("999");
Si noti che parseInt e Number hanno comportamenti diversi , ma in alcuni casi, uno può sostituire l'altro.
parseInt
e Number
. Ecco un vecchio test delle prestazioni .
Number()
è 6 volte più veloce diparseInt()
Non sto rispondendo correttamente alla domanda ma, penso che abbia senso chiarire perché dovremmo specificare il radix .
Sulla documentazione MDN possiamo leggere che:
Se radix non è definito o 0 (o assente), JavaScript presuppone quanto segue:
Fonte: MDN parseInt ()
L'aggiunta di quanto segue sopra il file JS indica a JSHint di sopprimere l'avviso radix:
/*jshint -W065 */
Vedi anche: http://jshint.com/docs/#options
"-W065": true
, ad esempio in un .jshintrc
file.
L'ho risolto semplicemente usando + foo, per convertire la stringa.
Tieni presente che non è eccezionale per la leggibilità (correzione sporca).
console.log( +'1' )
// 1 (int)
Puoi anche semplicemente aggiungere questa linea proprio sopra la tua linea di analisi:
// eslint-disable-next-line
Questo disabiliterà il controllo eslint per la riga successiva. Usa questo se hai solo bisogno di saltare una o due righe.
Basta inserire una stringa vuota nella posizione radix, perché parseInt () accetta due argomenti:
parseInt (string, radix);
stringa Il valore da analizzare. Se l'argomento stringa non è una stringa, viene convertito in una stringa (utilizzando l'operazione astratta ToString). Lo spazio bianco iniziale nell'argomento stringa viene ignorato.
radix Un numero intero compreso tra 2 e 36 che rappresenta la radice (la base nei sistemi matematici numerici) della stringa sopra menzionata. Specificare 10 per il sistema numerico decimale comunemente usato dall'uomo. Specificare sempre questo parametro per eliminare la confusione del lettore e garantire un comportamento prevedibile. Diverse implementazioni producono risultati diversi quando non viene specificata una radice, in genere il valore predefinito è 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
Aggiungi semplicemente la tua regola personalizzata in .eslintrc che assomiglia a quello
"radix": "off"
e sarai libero da questo esile avvertimento privo di preoccupazioni. Questo è per la linter eslint.
Prima di ECMAScript 5, parseInt () rilevava automaticamente anche i valori letterali ottali, il che causava problemi perché molti sviluppatori presumevano che uno 0 iniziale sarebbe stato ignorato.
Quindi invece di:
var num = parseInt("071"); // 57
Fai questo:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);