Uruchomiłem JSLint na tym kodzie JavaScript i powiedział:
Problem w wierszu 32 znaku 30: Brak parametru podstawki.
Oto kod, o którym mowa:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Co tu jest nie tak?
Uruchomiłem JSLint na tym kodzie JavaScript i powiedział:
Problem w wierszu 32 znaku 30: Brak parametru podstawki.
Oto kod, o którym mowa:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Co tu jest nie tak?
Odpowiedzi:
Zawsze dobrą praktyką jest przekazywanie podstawnika za pomocą parsowania -
parseInt(string, radix)
Dla dziesiętnego -
parseInt(id.substring(id.length - 1), 10)
Jeśli parametr radix zostanie pominięty, JavaScript przyjmuje następujące założenia:
( Odniesienie )
Redundant radix parameter
radix
Argument jest wartością liczbową, a nie ciągiem reprezentującym wartość liczbową, więc nie ma podstawki do określenia.
Aby uniknąć tego ostrzeżenia, zamiast używać:
parseInt("999", 10);
Możesz go zastąpić:
Number("999");
Zauważ, że parseInt i Number mają różne zachowania , ale w niektórych przypadkach jedno może zastąpić drugie.
Number()
jest 6 razy szybszy niżparseInt()
Nie odpowiadam poprawnie na pytanie, ale myślę, że sensowne jest wyjaśnienie, dlaczego powinniśmy określić podstawkę .
W dokumentacji MDN możemy przeczytać, że:
Jeśli podstawa jest niezdefiniowana lub 0 (lub nieobecna), JavaScript zakłada:
Źródło: MDN parseInt ()
Dodanie następującego na górze pliku JS powie JSHint, aby pomijał ostrzeżenie o radix:
/*jshint -W065 */
Zobacz także: http://jshint.com/docs/#options
"-W065": true
np. W .jshintrc
pliku.
Rozwiązałem to za pomocą + foo, aby przekonwertować ciąg.
Pamiętaj, że nie jest to świetne dla czytelności (brudna poprawka).
console.log( +'1' )
// 1 (int)
Możesz także po prostu dodać tę linię bezpośrednio nad linią parsowania:
// eslint-disable-next-line
Spowoduje to wyłączenie sprawdzania eslint dla następnej linii. Użyj tego, jeśli potrzebujesz tylko pominąć jedną lub dwie linie.
Po prostu umieść pusty ciąg w miejscu Radix, ponieważ parseInt () przyjmuje dwa argumenty:
parseInt (ciąg, podstawa);
ciąg Wartość do przeanalizowania. Jeśli argument ciągu nie jest ciągiem, jest on konwertowany na ciąg (za pomocą operacji abstrakcyjnej ToString). Wiodące białe znaki w argumencie ciągu są ignorowane.
podstawa Liczba całkowita od 2 do 36, która reprezentuje podstawkę (podstawa w matematycznych systemach liczbowych) wyżej wymienionego łańcucha. Podaj 10 dla dziesiętnego systemu liczbowego powszechnie używanego przez ludzi. Zawsze określaj ten parametr, aby wyeliminować zamieszanie czytnika i zagwarantować przewidywalne zachowanie. Różne implementacje dają różne wyniki, gdy podstawa nie jest określona, zwykle przyjmując domyślną wartość 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
Po prostu dodaj swoją niestandardową regułę do .eslintrc, która tak wygląda,
"radix": "off"
a będziesz wolny od tego ostrzeżenia o niepowodzeniu eslint. To jest dla okładziny eslint.
Przed ECMAScript 5 parseInt () również automatycznie wykrywał literały ósemkowe, co powodowało problemy, ponieważ wielu programistów zakładało, że wiodące zero będzie ignorowane.
Zamiast:
var num = parseInt("071"); // 57
Zrób to:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);