Saya menjalankan JSLint pada kode JavaScript ini dan mengatakan:
Masalah pada baris 32 karakter 30: Parameter radix tidak ada.
Ini adalah kode yang dimaksud:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Apa yang salah di sini?
javascript
jslint
radix
Mike Vierwind
sumber
sumber
Redundant radix parameter
radix
Argumen adalah nilai numerik, bukan representasi string dari nilai numerik, jadi tidak ada radix untuk ditentukan.Untuk menghindari peringatan ini, alih-alih menggunakan:
Anda dapat menggantinya dengan:
Perhatikan bahwa parseInt dan Number memiliki perilaku yang berbeda , tetapi dalam beberapa kasus, satu dapat menggantikan yang lain.
sumber
parseInt
danNumber
. Ini adalah tes kinerja lama .Number()
lebih cepat 6x dariparseInt()
Saya tidak menjawab pertanyaan dengan benar tetapi, saya pikir masuk akal untuk menjelaskan mengapa kita harus menentukan radix .
Pada dokumentasi MDN kita dapat membaca bahwa:
Jika radix tidak terdefinisi atau 0 (atau tidak ada), JavaScript mengasumsikan sebagai berikut:
Sumber: MDN parseInt ()
sumber
Anda dapat mematikan aturan ini jika Anda ingin melewati tes itu.
Memasukkan:
Di bawah
rules
properti " " dalamtslint.json
file.Tidak disarankan untuk melakukannya jika Anda tidak memahami pengecualian ini.
sumber
Menambahkan berikut ini di atas file JS Anda akan memberitahu JSHint untuk menekan peringatan radix:
Lihat juga: http://jshint.com/docs/#options
sumber
"-W065": true
, misalnya dalam.jshintrc
file.Saya menyelesaikannya dengan hanya menggunakan + foo, untuk mengkonversi string.
Perlu diingat itu tidak bagus untuk keterbacaan (perbaikan kotor).
sumber
Anda juga bisa menambahkan baris ini tepat di atas baris parseInt Anda:
Ini akan menonaktifkan pemeriksaan eslint untuk baris berikutnya. Gunakan ini jika Anda hanya perlu melewati satu atau dua baris.
sumber
Cukup masukkan string kosong di tempat radix, karena parseInt () mengambil dua argumen:
parseInt (string, radix);
string Nilai untuk diuraikan. Jika argumen string bukan string, maka itu dikonversi ke string (menggunakan operasi abstrak ToString). Ruang kosong terkemuka dalam argumen string diabaikan.
radix Bilangan bulat antara 2 dan 36 yang mewakili radix (dasar dalam sistem angka matematika) dari string yang disebutkan di atas. Tentukan 10 untuk sistem angka desimal yang biasa digunakan oleh manusia. Selalu tentukan parameter ini untuk menghilangkan kebingungan pembaca dan untuk menjamin perilaku yang dapat diprediksi. Implementasi yang berbeda menghasilkan hasil yang berbeda ketika radix tidak ditentukan, biasanya nilai defaultnya adalah 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;imageIndex = parseInt(id.substring(id.length - 1), '')-1;
sumber
Cukup tambahkan aturan khusus Anda di .eslintrc yang terlihat seperti itu
"radix": "off"
dan Anda akan bebas dari peringatan tanpa pemberitahuan eslint ini. Ini untuk linter eslint.sumber
Sebelum ECMAScript 5, parseInt () juga secara otomatis mendeteksi literal oktal, yang menyebabkan masalah karena banyak pengembang menganggap 0 terkemuka akan diabaikan.
Jadi Alih-alih:
Melakukan hal ini:
Referensi
sumber
Alih-alih memanggil
substring
fungsi yang bisa Anda gunakan.slice()
Di sini, -1 dalam slice menunjukkan bahwa untuk memulai slice dari indeks terakhir.
Terima kasih.
sumber