Eu executei o JSLint neste código JavaScript e ele disse:
Problema na linha 32, caractere 30: Parâmetro radix ausente.
Este é o código em questão:
imageIndex = parseInt(id.substring(id.length - 1))-1;
O que há de errado aqui?
Eu executei o JSLint neste código JavaScript e ele disse:
Problema na linha 32, caractere 30: Parâmetro radix ausente.
Este é o código em questão:
imageIndex = parseInt(id.substring(id.length - 1))-1;
O que há de errado aqui?
Respostas:
Sempre é uma boa prática transmitir radix com parseInt -
parseInt(string, radix)
Para decimal -
parseInt(id.substring(id.length - 1), 10)
Se o parâmetro radix for omitido, o JavaScript assumirá o seguinte:
( Referência )
Redundant radix parameter
radix
argumento é um valor numérico, não uma representação de seqüência de caracteres de um valor numérico, portanto, não há raiz para especificar.
Para evitar esse aviso, em vez de usar:
parseInt("999", 10);
Você pode substituí-lo por:
Number("999");
Observe que parseInt e Number têm comportamentos diferentes , mas em alguns casos, um pode substituir o outro.
parseInt
e Number
. Aqui está um teste de desempenho antigo .
Number()
é 6x mais rápido do queparseInt()
Não estou respondendo adequadamente à pergunta, mas acho que faz sentido esclarecer por que devemos especificar a raiz .
Na documentação do MDN, podemos ler o seguinte:
Se a raiz for indefinida ou 0 (ou ausente), o JavaScript assumirá o seguinte:
Fonte: MDN parseInt ()
Adicionar o seguinte no topo do seu arquivo JS informará o JSHint para suprimir o aviso de raiz:
/*jshint -W065 */
Consulte também: http://jshint.com/docs/#options
"-W065": true
, por exemplo, em um .jshintrc
arquivo.
Eu o resolvi usando apenas o + foo, para converter a string.
Lembre-se de que não é ótimo para legibilidade (correção suja).
console.log( +'1' )
// 1 (int)
Você também pode simplesmente adicionar esta linha logo acima da sua linha parseInt:
// eslint-disable-next-line
Isso desativará a verificação do eslint para a próxima linha. Use isso se você precisar apenas pular uma ou duas linhas.
Basta colocar uma string vazia no local do radical, porque parseInt () recebe dois argumentos:
parseInt (string, raiz);
string O valor a analisar. Se o argumento da string não for uma string, ele será convertido em uma string (usando a operação abstrata ToString). O espaço em branco à esquerda no argumento da string é ignorado.
radix Um número inteiro entre 2 e 36 que representa o radical (a base nos sistemas de números matemáticos) da string mencionada acima. Especifique 10 para o sistema numeral decimal comumente usado por seres humanos. Sempre especifique este parâmetro para eliminar a confusão do leitor e garantir um comportamento previsível. Implementações diferentes produzem resultados diferentes quando um radical não é especificado, geralmente padronizando o valor para 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
Simplesmente adicione sua regra personalizada em .eslintrc, que se parece com isso,
"radix": "off"
e você estará livre deste aviso de falta de manutenção. Isto é para o linter eslint.
Antes do ECMAScript 5, parseInt () também identificava literais octais automaticamente, o que causava problemas porque muitos desenvolvedores supunham que um 0 inicial fosse ignorado.
Então, em vez de:
var num = parseInt("071"); // 57
Faça isso:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);