J'ai exécuté JSLint sur ce code JavaScript et il a dit:
Problème à la ligne 32, caractère 30: paramètre radix manquant.
Voici le code en question:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Qu'est-ce qui ne va pas ici?
J'ai exécuté JSLint sur ce code JavaScript et il a dit:
Problème à la ligne 32, caractère 30: paramètre radix manquant.
Voici le code en question:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Qu'est-ce qui ne va pas ici?
Réponses:
C'est toujours une bonne pratique de passer radix avec parseInt -
parseInt(string, radix)
Pour décimal -
parseInt(id.substring(id.length - 1), 10)
Si le paramètre radix est omis, JavaScript suppose ce qui suit:
( Référence )
Redundant radix parameter
radix
argument est une valeur numérique, pas une représentation sous forme de chaîne d'une valeur numérique, il n'y a donc pas de radix à spécifier.
Pour éviter cet avertissement, au lieu d'utiliser:
parseInt("999", 10);
Vous pouvez le remplacer par:
Number("999");
Notez que parseInt et Number ont des comportements différents , mais dans certains cas, l'un peut remplacer l'autre.
parseInt
et Number
. Voici un ancien test de performance .
Number()
6 fois plus rapide queparseInt()
Je ne réponds pas correctement à la question, mais je pense qu'il est logique de préciser pourquoi nous devrions spécifier la radix .
Sur la documentation MDN, nous pouvons lire que:
Si radix n'est pas défini ou 0 (ou absent), JavaScript suppose ce qui suit:
Source: MDN parseInt ()
Vous pouvez désactiver cette règle si vous souhaitez ignorer ce test.
Insérer:
radix: false
Sous la rules
propriété " " du tslint.json
fichier.
Il n'est pas recommandé de le faire si vous ne comprenez pas cette exception.
L'ajout de ce qui suit en haut de votre fichier JS indiquera à JSHint de supprimer l'avertissement Radix:
/*jshint -W065 */
Voir aussi: http://jshint.com/docs/#options
"-W065": true
, par exemple dans un .jshintrc
fichier.
Je l'ai résolu en utilisant simplement le + foo, pour convertir la chaîne.
Gardez à l'esprit que ce n'est pas génial pour la lisibilité (correction incorrecte).
console.log( +'1' )
// 1 (int)
Vous pouvez également simplement ajouter cette ligne juste au-dessus de votre ligne parseInt:
// eslint-disable-next-line
Cela désactivera la vérification eslint pour la ligne suivante. Utilisez-le si vous ne devez sauter qu'une ou deux lignes.
Mettez simplement une chaîne vide à la place de radix, car parseInt () prend deux arguments:
parseInt (chaîne, radix);
chaîne La valeur à analyser. Si l'argument chaîne n'est pas une chaîne, il est converti en chaîne (à l'aide de l'opération abstraite ToString). L'espace de tête dans l'argument chaîne est ignoré.
radix Un entier compris entre 2 et 36 qui représente le radix (la base dans les systèmes numériques mathématiques) de la chaîne mentionnée ci-dessus. Spécifiez 10 pour le système numérique décimal couramment utilisé par les humains. Spécifiez toujours ce paramètre pour éliminer la confusion du lecteur et garantir un comportement prévisible. Différentes implémentations produisent des résultats différents lorsqu'une base n'est pas spécifiée, la valeur par défaut étant généralement 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
Ajoutez simplement votre règle personnalisée dans .eslintrc qui ressemble à cela
"radix": "off"
et vous serez libéré de cet avertissement de non-eslint eslint. C'est pour le linter eslint.
Avant ECMAScript 5, parseInt () détectait également automatiquement les littéraux octaux, ce qui posait des problèmes car de nombreux développeurs supposaient qu'un 0 de tête serait ignoré.
Donc au lieu de:
var num = parseInt("071"); // 57
Faites ceci:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);