JSLint mówi "Brak parametru radix"; co powinienem zrobić?

Uruchomiłem JSLint na tym kodzie JavaScript i powiedział:

Problem w linii 32 znak 30: Brak parametru radix.

Oto Kod, o którym mowa:

imageIndex = parseInt(id.substring(id.length - 1))-1;
Co tu się dzieje?
Author: Mosh Feu, 2011-10-19

8 answers

Zawsze dobrą praktyką jest przepuszczanie radix z parseInt -

parseInt(string, radix)

Dla dziesiętnego-

parseInt(id.substring(id.length - 1), 10)

Jeśli parametr radix jest pominięty, JavaScript przyjmuje następujące wartości:

  • jeśli łańcuch zaczyna się od "0x", radix wynosi 16 (szesnastkowo)
  • jeśli łańcuch zaczyna się od "0", radix wynosi 8 (ósemka). Ta funkcja jest przestarzała
  • jeśli łańcuch zaczyna się od innej wartości, radix wynosi 10 (dziesiętne)

(odniesienie)

 731
Author: Jayendra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-30 01:49:01

Nie odpowiadam właściwie na pytanie, ale myślę, że to ma sens, aby wyjaśnić Dlaczego powinniśmy określić radix .

Na dokumentacji MDN możemy przeczytać, że:

Jeśli radix jest niezdefiniowany lub 0 (lub nieobecny), JavaScript przyjmuje następujące wartości:

  • [...]
  • Jeśli łańcuch wejściowy zaczyna się od "0", radix wynosi osiem (ósemkowe) lub 10 (dziesiętne). Dokładnie wybrany radix zależy od implementacji. ECMAScript 5 określa, że używane jest 10 (dziesiętnych), ale nie wszystkie przeglądarki obsługują to jeszcze. Z tego powodu zawsze podaj radix podczas korzystania z parseInt.
  • [...]

Źródło: MDN parseInt()

 34
Author: nmoliveira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-17 13:09:14

Dodanie następującego elementu na górze pliku JS spowoduje, że JSHint powstrzyma Ostrzeżenie radix:

/*jshint -W065 */

Zobacz też: http://jshint.com/docs/#options

 22
Author: aleemb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-01 21:06:41

Możesz wyłączyć tę regułę, jeśli chcesz pominąć ten test.

Insert:

radix: false

Pod właściwością "rules " w pliku tslint.json.

Nie zaleca się tego robić, jeśli nie rozumiesz tego wyjątku.
 17
Author: Spock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-30 09:36:02

Aby uniknąć tego ostrzeżenia, zamiast używać:

parseInt("999", 10);

Można go zastąpić przez:

Number("999");


zauważ, że parseInt i Number mają różne zachowania , ale w niektórych przypadkach jedno może zastąpić drugie.

 16
Author: Zanon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-13 12:47:29

Rozwiązałem to tylko za pomocą + foo, aby przekonwertować ciąg znaków.

Należy pamiętać, że nie jest to dobre dla czytelności (dirty fix).

console.log( +'1' )
// 1 (int)
 4
Author: user2369834,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-16 09:59:43

Możesz również po prostu dodać tę linię tuż nad linią parseInt:

// eslint-disable-next-line

Spowoduje to wyłączenie sprawdzania eslint dla następnej linii. Użyj tego, jeśli chcesz pominąć tylko jedną lub dwie linie.

 3
Author: Rohit Nethi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-01 21:02:22

Po prostu umieść pusty łańcuch w miejscu radix, ponieważ parseInt() przyjmuje dwa argumenty:

ParseInt(string, radix);

String Wartość do analizy. Jeżeli argument string nie jest łańcuchem, wtedy jest on skonwertowany na łańcuch (przy użyciu abstrakcyjnej operacji ToString). Początkowe białe znaki w argumencie string są ignorowane.

Radix Liczba całkowita między 2 A 36, która reprezentuje radix (bazę w matematycznych systemach liczbowych) wyżej wymienionego ciągu. Określ 10 dla system liczb dziesiętnych powszechnie używany przez ludzi. Zawsze określ ten parametr, aby wyeliminować dezorientację czytelnika i zagwarantować przewidywalne zachowanie. Różne implementacje dają różne wyniki, gdy radix nie jest określony, Zwykle ustawiając wartość domyślną na 10.

imageIndex = parseInt ( id.substring(id.długość - 1))-1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;

 2
Author: Ahmed.Dz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 02:59:32