JSLint "eksik radix parametri" deyir; nə etməliyəm?

JSLint'i bu javascript kodunda qaçdım və dedi:

Xarakterli simli 32 problemi: Parametr radixinin olmaması.

Sözügedən kod:

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

Burada nədir?

370
19 окт. Mike Vierwind tərəfindən 19 oktyabrda təyin olundu . 2011-10-19 12:04 '11 at 12:04 2011-10-19 12:04
@ 8 cavab

ParseInt ilə radix ötürmək üçün həmişə yaxşı təcrübədir -

 parseInt(string, radix) 

Onlu sayda -

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

Radix parametri silinməzsə, JavaScript aşağıdakıları nəzərdə tutur:

  • Xətt "0x" ilə başlayırsa, radix 16 (hex)
  • Xətt "0" ilə başlayırsa radius 8 (sekiz) dir. Bu xüsusiyyət qadağandır.
  • Sətir başqa hər hansı bir dəyərlə başlayırsa radius 10 (decimal) olur.

( Referans )

682
19 окт. Jayendra tərəfindən Cavab 19 oktyabr 2011-10-19 12:06 '11 at 12:06 2011-10-19 12:06

Suala düzgün cavab vermirəm, amma məncə, radixin niyə müəyyənləşdirilməsinin vacib olduğunu düşünürəm.

MDN sənədlərində aşağıdakıları oxuya bilərsiniz:

Əgər radix undefined və ya 0 (və ya itkin), JavaScript aşağıdakı edir:

border=0
  • [...]
  • Giriş dizesi "0" ilə başlamışsa radius səkkiz (sekizlik) və ya 10 (decimal) olur. Radik tərəfindən seçilmiş birinin həyata keçirilməsindən asılıdır. ECMAScript 5, 10 (decimal) istifadə etdiyini göstərir, lakin bütün brauzerlər bunu dəstəkləmirlər. Bu səbəblə, həmişə parseInt istifadə edərkən radix müəyyənləşdirin.
  • [...]

Mənbə: MDN parseInt ()

32
17 дек. Cavab nmoliveira 17 dekabr verilir. 2013-12-17 16:09 '13 at 16:09 2013-12-17 16:09

JS dosyanızın üzərinə aşağıdakıları əlavə etmək JSHint-in etibarsız radix xəbərdarlığını göstərir:

  

Həmçinin baxın: http://jshint.com/docs/#options

21
02 мая '13 в 0:06 2013-05-02 00:06 Cavab aleemb 02 may '13 da 0:06 2013-05-02 00:06 verilir

Bu testi atlamaq istəsəniz, bu qaydaları aradan buraxa bilərsiniz.

Yapıştır:

 radix: false 

tslint.json faylının " rules " bölməsində.

Əgər bu istisnanı anlamırsan, bunu etmək tövsiyə edilmir.

16
29 авг. Cavab Spock 29 aug verilir . 2016-08-29 19:15 '16 saat 19:15 'da 2016-08-29 19:15

Bu xəbərdarlıqdan qaçmaq üçün, istifadə etmək əvəzinə:

 parseInt("999", 10); 

Bunu aşağıdakılarla əvəz edə bilərsiniz:

 Number("999"); 


ParseInt və Sayının fərqli davranış növlərinə sahib olduğunu unutmayın, lakin bəzi hallarda başqa bir şeyi əvəz edə bilərsiniz.

11
13 апр. cavab Zanon 13 apr verilir . 2018-04-13 15:47 '18 saat 15:47 'da 2018-04-13 15:47

Bunu simli çevirmək üçün yalnız + foo istifadə edərək həll etdim.

Bu oxumaq üçün çox əlverişli olmadığını unutmayın (çirkli düzəliş).

 console.log( +'1' ) // 1 (int) 
2
16 февр. 16 fevral tarixində user2369834 tərəfindən verilmiş cavab 2018-02-16 12:59 '18 at 12:59 pm 2018-02-16 12:59

Siz həmçinin sadəcə parseInt line yuxarıda bu xətt əlavə edə bilərsiniz:

 // eslint-disable-next-line 

Bu sonrakı xətt üçün nağıl yoxlamasını aradan qaldıracaq. Yalnız bir və ya iki xətt atlamağınız lazımdırsa, bu istifadə edin.

1
02 апр. Cavab Rohit Nethi tərəfindən verilir 02 Apr. 2018-04-02 00:02 '18 at 0:02 2018-04-02 00:02

ParseInt () iki arqument götürür, çünki radix yerdə boş bir simli qoyun:

parseInt (string, radix);

string Qiymətləndirmək üçün dəyər. Dize arqumenti bir simli deyilsə, bir dize çevrilir (mücərrəd ToString əməliyyatı istifadə olunur). Dize arqumentində aparıcı yerlər nəzərə alınmır.

radix Yuxarıdakı simvolun bazası (riyazi ədədi sistemlər bazası) olan 2-dən 36-a bir tamsayı. İnsanlar tərəfindən istifadə olunan onlu rəqəmsal sistem üçün 10 göstərin. Oxucuya qarşı anlaşılmazlıqları aradan qaldırmaq və proqnozlaşdırılan davranışı təmin etmək üçün həmişə bu parametrləri göstərin. Redix müəyyən edilmədikdə, fərqli tətbiqlər fərqli nəticələr verir, adətən default dəyər 10-a bərabərdir.

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

1
11 апр. cavab 11 aprel tarixində Ahmed.Dz tərəfindən verilmişdir 2018-04-11 05:59 '18 də 5:59 'də 2018-04-11 05:59

tags haqqında suallar və ya bir sual