Ich habe JSLint mit diesem JavaScript-Code ausgeführt und es stand:
Problem in Zeile 32, Zeichen 30: Fehlender Radix-Parameter.
Dies ist der fragliche Code:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Was ist hier falsch?
javascript
jslint
radix
Mike Vierwind
quelle
quelle
Redundant radix parameter
radix
Argument ist ein numerischer Wert, keine Zeichenfolgendarstellung eines numerischen Werts, daher muss kein Radix angegeben werden.Um diese Warnung zu vermeiden, anstatt Folgendes zu verwenden:
Sie können es ersetzen durch:
Beachten Sie, dass parseInt und Number sich unterschiedlich verhalten . In einigen Fällen kann jedoch eines das andere ersetzen.
quelle
parseInt
undNumber
. Hier ist ein alter Leistungstest .Number()
ist 6x schneller alsparseInt()
Ich beantworte die Frage nicht richtig, aber ich denke, es ist sinnvoll zu klären, warum wir den Radix angeben sollten .
In der MDN-Dokumentation können wir Folgendes lesen:
Wenn radix undefiniert ist oder 0 ist (oder fehlt), geht JavaScript von Folgendem aus:
Quelle: MDN parseInt ()
quelle
Sie können diese Regel deaktivieren, wenn Sie diesen Test überspringen möchten.
Einfügen:
Unter der
rules
Eigenschaft " " in dertslint.json
Datei.Es wird nicht empfohlen, dies zu tun, wenn Sie diese Ausnahme nicht verstehen.
quelle
Wenn Sie Folgendes zu Ihrer JS-Datei hinzufügen, wird JSHint angewiesen, die Radix-Warnung zu unterdrücken:
Siehe auch: http://jshint.com/docs/#options
quelle
"-W065": true
zB in einer.jshintrc
Datei verwenden.Ich habe es mit nur + foo gelöst, um den String zu konvertieren.
Denken Sie daran, es ist nicht gut für die Lesbarkeit (Dirty Fix).
quelle
Sie können diese Zeile auch einfach direkt über Ihrer parseInt-Zeile hinzufügen:
Dadurch wird die Eslint-Prüfung für die nächste Zeile deaktiviert. Verwenden Sie diese Option, wenn Sie nur eine oder zwei Zeilen überspringen müssen.
quelle
Fügen Sie einfach eine leere Zeichenfolge an die Stelle des Radix ein, da parseInt () zwei Argumente akzeptiert:
parseInt (string, radix);
string Der zu analysierende Wert. Wenn das Zeichenfolgenargument keine Zeichenfolge ist, wird es in eine Zeichenfolge konvertiert (mithilfe der abstrakten Operation ToString). Führende Leerzeichen im Zeichenfolgenargument werden ignoriert.
radix Eine Ganzzahl zwischen 2 und 36, die den Radix (die Basis in mathematischen Zahlensystemen) der oben genannten Zeichenfolge darstellt. Geben Sie 10 für das Dezimalzahlensystem an, das üblicherweise von Menschen verwendet wird. Geben Sie diesen Parameter immer an, um Verwirrung beim Leser zu vermeiden und ein vorhersehbares Verhalten zu gewährleisten. Unterschiedliche Implementierungen führen zu unterschiedlichen Ergebnissen, wenn kein Radix angegeben wird. Der Standardwert ist normalerweise 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;imageIndex = parseInt(id.substring(id.length - 1), '')-1;
quelle
Fügen
"radix": "off"
Sie einfach Ihre benutzerdefinierte Regel in .eslintrc hinzu, die so aussieht, und Sie sind frei von dieser unauffälligen Warnung. Dies ist für den Eslint-Linter.quelle
Vor ECMAScript 5 erkannte parseInt () auch automatisch Oktalliterale, was zu Problemen führte, da viele Entwickler davon ausgegangen waren, dass eine führende 0 ignoriert würde.
Also statt:
Mach das:
Referenz
quelle
Anstatt die
substring
Funktion aufzurufen, die Sie verwenden könnten.slice()
Hier gibt -1 in Slice an, dass Slice vom letzten Index aus gestartet werden soll.
Vielen Dank.
quelle