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?
javascript
jslint
radix
Mike Vierwind
la source
la source
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:
Vous pouvez le remplacer par:
Notez que parseInt et Number ont des comportements différents , mais dans certains cas, l'un peut remplacer l'autre.
la source
parseInt
etNumber
. 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 ()
la source
Vous pouvez désactiver cette règle si vous souhaitez ignorer ce test.
Insérer:
Sous la
rules
propriété " " dutslint.json
fichier.Il n'est pas recommandé de le faire si vous ne comprenez pas cette exception.
la source
L'ajout de ce qui suit en haut de votre fichier JS indiquera à JSHint de supprimer l'avertissement Radix:
Voir aussi: http://jshint.com/docs/#options
la source
"-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).
la source
Vous pouvez également simplement ajouter cette ligne juste au-dessus de votre ligne parseInt:
Cela désactivera la vérification eslint pour la ligne suivante. Utilisez-le si vous ne devez sauter qu'une ou deux lignes.
la source
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;
la source
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.la source
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:
Faites ceci:
Référence
la source
Au lieu d'appeler la
substring
fonction que vous pourriez utiliser.slice()
Ici, -1 en tranche indique que pour commencer la tranche à partir du dernier index.
Merci.
la source