Ich habe JSLint auf diesen JavaScript-Code angewendet und es sagte:
Problem in Zeile 32 Zeichen 30: Fehlender Radix-Parameter.
Dies ist der betreffende Code:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Was ist hier falsch?
Ich habe JSLint auf diesen JavaScript-Code angewendet und es sagte:
Problem in Zeile 32 Zeichen 30: Fehlender Radix-Parameter.
Dies ist der betreffende Code:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Was ist hier falsch?
Es ist immer eine gute Praxis, radix mit parseInt zu übergeben -
parseInt(string, radix)
Für dezimale -
parseInt(id.substring(id.length - 1), 10)
Wenn der Parameter radix weggelassen wird, geht JavaScript von folgendem aus:
( Referenz )
So wie es sich anhört, ist der Standardwert 10. Wenn es nicht mit 0x oder 0 beginnt, ist es standardmäßig ein Radix von 10. Aber es ist die beste Praxis, ein Radix anzugeben, auch wenn es der Standardwert ist, so wie die Definition von "this" für eine array.map-Funktion anzugeben.
Das ist so unvernünftig... nach dieser Logik sollte es einen dritten Parameter geben, der die Radix des Radix-Arguments selbst darstellt
Ich stimme den anderen Kommentatoren zu. Warum ist es gut, einen Radix-Wert anzugeben, wenn der Standardwert 10 ist? Dies widerspricht den üblichen Konventionen.
Um diese Warnung zu vermeiden, verwenden Sie stattdessen:
parseInt("999", 10);
Sie können es durch ersetzen:
Number("999");
Beachten Sie, dass parseInt und Number über unterschiedliche Verhaltensweisen Aber in manchen Fällen kann das eine das andere ersetzen.
Außerdem gibt es große Leistungsunterschiede zwischen parseInt
y Number
. Hier ist eine alter Leistungstest .
Ich beantworte die Frage nicht richtig, aber ich denke, es ist sinnvoll, die warum wir das Radix angeben sollten .
In der MDN-Dokumentation können wir das nachlesen:
Wenn radix undefiniert oder 0 (oder nicht vorhanden) ist, nimmt JavaScript an, dass die Folgendes an:
- [...]
- Beginnt der Eingabe-String mit "0", ist die Radix acht (oktal) oder 10 (d ECMAScript 5 legt fest, dass 10 (dezimal) verwendet wird, aber noch nicht alle Browser unterstützen dies. Aus diesem Grund sollten Sie bei der Verwendung von parseInt immer ein Radix an, wenn Sie parseInt verwenden.
- [...]
Quelle: MDN parseInt()
Ja, aber der Typescript-Compiler fügt sie ein, also warum sollten Sie sich die Mühe machen?
@Spock Weil TSLint sich beschwert, dass es nicht da ist. Und wir gehen den Kaninchenbau hinunter...
Ja, stimmt deshalb deaktiviere ich diese Fusselregel einfach. Verstehe immer noch nicht, warum ein OPTIONALer Parameter eine Fusselbeschwerde auslöst na ja
Durch Hinzufügen der folgenden Zeile zu Ihrer JS-Datei wird JSHint angewiesen, die Radix-Warnung zu unterdrücken:
/*jshint -W065 */
Siehe auch: http://jshint.com/docs/#options
Auf welche jshint-Option bezieht sich dies? Ich benutze SublimeLint, um jshint in meinem Editor auszuführen, und es nimmt nur einen Hash von Option: Wertepaare für seine Einstellung, so dass ich nicht glaube, ich kann Ihre "-W065" Vorschlag anwenden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.