Rumah > hujung hadapan web > tutorial js > Mengapakah `parseInt` Mengembalikan `NaN` Apabila Digunakan dengan `Array#map`?

Mengapakah `parseInt` Mengembalikan `NaN` Apabila Digunakan dengan `Array#map`?

DDD
Lepaskan: 2024-12-14 15:02:12
asal
723 orang telah melayarinya

Why Does `parseInt` Return `NaN` When Used with `Array#map`?

Mengapa ParseInt Mengembalikan NaN dengan Array#map?

Rangkaian Pembangun Mozilla menyatakan bahawa [1,4,9].map( Math.sqrt) mengembalikan [1,2,3]. Walau bagaimanapun, menggunakan parseInt pada tatasusunan literal ['1','2','3'] dengan hasil peta [1, NaN, NaN]. Tingkah laku ini berlaku dalam Firefox 3.0.1 dan Chrome 0.3.

Punca Punca

Percanggahan timbul daripada fungsi panggil balik dalam peta yang mempunyai tiga parameter: nilai elemen, indeksnya, dan objek tatasusunan yang dilalui. Apabila parseInt dipanggil dalam peta, indeks menjadi hujah kedua, yang ditafsirkan sebagai radix (asas sistem nombor yang sedang ditukar).

Dalam kes yang disebutkan di atas, parseInt dipanggil dengan nilai radix 0 , 1, dan 2, masing-masing. Radix ialah 10 secara lalai untuk integer tanpa sifar pendahuluan. Walau bagaimanapun, radix 1 adalah tidak sah dan radix 2 tidak menyokong nombor 3. Oleh itu, parseInt mengembalikan NaN untuk elemen kedua dan ketiga.

Penyelesaian

Kepada betulkan ini, fungsi pembungkus boleh digunakan:

['1','2','3'].map(function(num) { return parseInt(num, 10); });
Salin selepas log masuk

Sebagai alternatif, dalam ES2015 :

['1','2','3'].map(num => parseInt(num, 10));
Salin selepas log masuk

Dengan memberikan radix secara eksplisit sebagai 10, kami memastikan parseInt mentafsir rentetan dengan betul sebagai integer asas-10.

Atas ialah kandungan terperinci Mengapakah `parseInt` Mengembalikan `NaN` Apabila Digunakan dengan `Array#map`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan