J'ai exécuté JSLint sur ce code JavaScript et il a déclaré:
Problème à la ligne 32, caractère 30: paramètre de base manquant.
C'est le code en question:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Qu'est-ce qui ne va pas ici?
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 que:
( référence )
Pour éviter cet avertissement, au lieu d'utiliser:
parseInt("999", 10);
Vous pouvez le remplacer par:
Number("999");
Notez que parseInt et Number ont comportements différents , mais dans certains cas, l'un peut remplacer l'autre.
Je ne réponds pas correctement à la question mais, je pense qu'il est logique de clarifier pourquoi nous devrions spécifier la base .
Sur la documentation MDN, on peut lire que:
Si la base est non définie ou égale à 0 (ou absente), JavaScript suppose que:
Source: MDN parseInt ()
Vous pouvez désactiver cette règle si vous souhaitez ignorer ce test.
Insérer:
radix: false
Sous la propriété "rules
" du fichier tslint.json
.
Il n'est pas recommandé de faire cela si vous ne comprenez pas cette exception.
Ajouter ce qui suit en haut de votre fichier JS indiquera à JSHint de supprimer l'avertissement de base:
/*jshint -W065 */
Voir aussi: http://jshint.com/docs/#options
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 cette option si vous ne devez ignorer qu'une ou deux lignes.
Je l'ai résolu en utilisant simplement le + toto, pour convertir la chaîne.
Gardez à l'esprit que ce n'est pas excellent pour la lisibilité (solution sale).
console.log( +'1' )
// 1 (int)
Il suffit de mettre une chaîne vide à la place de la base, car parseInt () prend deux arguments:
parseInt (chaîne, radix);
string La valeur à analyser. Si l'argument de chaîne n'est pas une chaîne, il est converti en chaîne (à l'aide de l'opération abstraite ToString). Les espaces de début dans l'argument de chaîne sont ignorés.
radix Un entier compris entre 2 et 36 qui représente le radix (la base dans les systèmes de nombres mathématiques) de la chaîne mentionnée ci-dessus. Spécifiez 10 pour le système de nombres décimaux couramment utilisé par les humains. Spécifiez toujours ce paramètre pour éliminer la confusion du lecteur et garantir un comportement prévisible. Des implémentations différentes produisent des résultats différents lorsqu'aucune base n'est spécifiée, généralement la valeur par défaut est 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;imageIndex = parseInt(id.substring(id.length - 1), '')-1;
Au lieu d'appeler la fonction substring
, vous pouvez utiliser .slice()
imageIndex = parseInt(id.slice(-1)) - 1;
Ici, -1 dans la tranche indique que commencer par la tranche à partir du dernier index.
Merci.
Ajoutez simplement votre règle personnalisée dans .eslintrc qui ressemble à ceci "radix": "off"
et vous serez libéré de cet avertissement eslint unnesesery. Ceci est pour le linter eslint.