JSLint sako „trūkstamas radix parametras“; ką turėčiau daryti?

Šiame JavaScript kode bėgau JSLint ir jis sakė:

Problema su simbolių eilute 32: Trūksta parametro radix.

Tai yra atitinkamas kodas:

 imageIndex = parseInt(id.substring(id.length - 1))-1; 

Kas čia negerai?

370
19 окт. nustatė Mike Vierwind spalio 19 d. 2011-10-19 12:04 '11, 12:04, 2011-10-19 12:04
@ 8 atsakymai

Visada gera praktika perduoti radix su parseInt -

 parseInt(string, radix) 

Dešimtainiam skaičiui -

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

Jei radix parametras yra praleistas, „JavaScript“ prisiima:

  • Jei linija prasideda „0x“, tada 16 radix (hex)
  • Jei linija prasideda „0“, spindulys yra 8 (aštuonis). Ši funkcija pasenusi.
  • Jei eilutė prasideda bet kuria kita verte, spindulys yra 10 (dešimtainė).

( Nuoroda )

682
19 окт. Atsakymas Jayendra 19 spalis 2011-10-19 12:06 '11, 12:06, 2011-10-19 12:06

Aš teisingai neatsakau į šį klausimą, bet manau, kad tikslinga aiškinti, kodėl turėtume nurodyti radix .

MDN dokumentuose galime skaityti, kad:

Jei radix yra neapibrėžta arba 0 (arba trūksta), „JavaScript“ prisiima:

  • [...]
  • Jei įvesties eilutė prasideda „0“, spindulys yra aštuonis (aštuonis) arba 10 (dešimtainis). Radiko pasirinktas priklauso nuo įgyvendinimo. ECMAScript 5 rodo, kad naudojamas 10 (dešimtainis), bet ne visos naršyklės tai palaiko. Dėl šios priežasties visada naudokite radix, kai naudojate parseInt.
  • [...]

Šaltinis: MDN parseInt ()

32
17 дек. Atsakymas pateikiamas nmoliveira gruodžio 17 d. 2013-12-17 16:09 '13, 16:09, 2013-12-17 16:09

Įrašius toliau nurodytą JS failą, JSHint bus nurodomas negaliojantis radix įspėjimas:

  

Taip pat žiūrėkite: http://jshint.com/docs/#options

21
02 мая '13 в 0:06 2013-05-02 00:06 atsakymas duotas gegužės 02 d. 13 d. 0:06 2013-05-02 00:06

Šią taisyklę galite išjungti, jei norite praleisti šį testą.

Įklijuoti:

 radix: false 

tslint.json failo skiltyje „ rules “.

Nerekomenduojama tai padaryti, jei nesuprantate šios išimties.

16
29 авг. atsakymas suteiktas Spock 29 rug. 2016-08-29 19:15 '16 at 19:15 2016-08-29 19:15

Jei norite išvengti šio įspėjimo, vietoj to, kad:

 parseInt("999", 10); 

Galite jį pakeisti:

 Number("999"); 


Atkreipkite dėmesį, kad parseInt ir Number turi skirtingus elgesio tipus, tačiau kai kuriais atvejais galite pakeisti kitą.

11
13 апр. atsakymas pateikiamas Zanon 13 d. 2018-04-13 15:47 '18, 15:47 pm 2018-04-13 15:47

Aš šią problemą išsprendžiau naudodamas tik + foo, kad pakeistumėte eilutę.

Turėkite omenyje, kad tai nėra labai patogu skaityti (purvinas pataisymas).

 console.log( +'1' ) // 1 (int) 
2
16 февр. atsakymas, kurį pateikė vartotojo2369834 vasario 16 d. 2018-02-16 12:59 '18, 12:59 val. 2018-02-16 12:59

Taip pat galite tiesiog pridėti šią eilutę tiesiai virš savo parseInt linijos:

 // eslint-disable-next-line 

Taip bus išjungta kitos eilutės patikra. Naudokite tai, jei reikia praleisti tik vieną ar dvi eilutes.

1
02 апр. Atsakymą pateikė Rohit Nethi 02 Bal. 2018-04-02 00:02 '18 prie 0:02 2018-04-02 00:02

Tiesiog įdėkite tuščią eilutę į radix vietą, nes parseInt () priima du argumentus:

parseInt (eilutė, radix);

eilutė Reikšmė išanalizuoti. Jei eilutės argumentas nėra eilutė, jis konvertuojamas į eilutę (naudojant abstrakčią „ToString“ operaciją). Svarbiausios eilutės argumentų eilutės yra ignoruojamos.

radix Visas skaičius nuo 2 iki 36, kuris yra aukščiau nurodytos eilutės pagrindas (matematinių skaičių sistemų pagrindas). 10 nurodykite dešimtainę skaitmeninę sistemą, kurią paprastai naudoja žmonės. Visada nurodykite šį parametrą, kad pašalintumėte skaitytojų nesusipratimus ir užtikrintumėte nuspėjamą elgesį. Įvairūs diegimai duoda skirtingus rezultatus, kai rediksas nėra nurodytas, paprastai numatytoji vertė yra 10.

imageIndex = parseInt (id.substring (id.length - 1)) -1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;

1
11 апр. atsakymą pateikė Ahmed.Dz balandžio 11 d 2018-04-11 05:59 '18, 17:59 pm 2018-04-11 05:59

Žr. Kitus klausimus apie arba Ask a Question